从零开始优雅的使用mongodb实例
基本连接
一、创建express工程testmon
express testmon
二、精简app.js
var express = require("express");
var app = express();
app.get('/', function(req, res) {
res.send('访问一次增加一条数据');
});
var server = app.listen(3000,function(){
console.log("请在浏览器访问:http://localhost:3000");
});

三:进入工程目录安装mongoose并引入依赖:
npm install --save mongoose
四、修改app.js
var express = require("express");
var app = express();
app.get('/', function(req, res) {
res.send('Hello, tinyphp');
});
var server = app.listen(3000,function(){
console.log("请在浏览器访问:http://localhost:3000");
});
//引入mongoose模块
var mongoose = require('mongoose');
//创建数据库连接
var db=mongoose.connect('mongodb://localhost:27017/test');
//检查是否连接成功
db.connection.on("error",function(error){
console.log("数据库连接失败:"+error);
});
db.connection.on("open",function(error){
console.log("++++++数据库连成功++++++");
});
/*****Schema使用*****/
//定义kitty属性
var kittySchema = mongoose.Schema({
name: String
});
//将该Schema发布为Model,第一个参数为集合名
var kittyModel = mongoose.model('kitty', kittySchema);
//用module创建kitty实体
var kittyEntity = new kittyModel({ name: 'tinyphp99' });
//保存数据
kittyEntity.save(function (err) {
if (err) {
console.log(err);
} else {
console.log('成功插入数据');
}
});
/************/

打开另外一个cmd窗口,先查询一次数据,然后重新启动工程,再查询一次数据发现数据成功添加上了

分离改造
下面我们把它改装为一访问http://localhost:3000/add就自动添加数据,思路


config.js 数据库配置信息
module.exports={
mongodb:"mongodb://localhost:27017/test"
}
mongoose.js 数据库连接文件
//引入mongoose模块
var mongoose = require('mongoose');
var config=require('./config.js'); module.exports=function(){
//创建数据库连接
var db=mongoose.connect(config.mongodb);
//检查是否连接成功
db.connection.on("error",function(error){
console.log("数据库连接失败:"+error);
}); db.connection.on("open",function(error){
console.log("++++++数据库连成功++++++");
});
require('../models/kitty.model.js');
return db;
}
kitty.model.js 导出Model用于生成实体
var mongoose =require('mongoose');
/*****Schema使用*****/
//定义kitty属性
var kittySchema = mongoose.Schema({
name: String
});
mongoose.model('kitty',kittySchema);
app.js
var express = require("express");
var mongoose = require('./config/mongoose.js');
var db=mongoose();
var app = express();
var add=require('./routes/add');
app.use('/add',add);
var server = app.listen(3000,function(){
console.log("请在浏览器访问:http://localhost:3000");
});
add.js 控制访问一次http://localhost:3000/add插入一次数据
var express = require('express');
var router = express.Router();
var mongoose =require('mongoose');
//将该Schema发布为Model,第一个参数为集合名
var kittyModel=mongoose.model('kitty');
/* GET home page. */
router.get('/', function(req, res, next) {
res.send('又添加一条数据');
//用module创建kitty实体
var kittyEntity = new kittyModel({ name: 'tom' });
//保存数据
kittyEntity.save(function (err) {
if (err) {
console.log(err);
} else {
console.log('成功插入数据');
}
});
});
module.exports = router;

路由里因为用到kittyModel所以引入要在mongoose初始化后,不然会提示出错“Schema hasn't been registered ...”, 自己把上面的顺序调换测试下更深刻噢~
温馨提示:测试多了,不妨使用db.table.drop() 把整个集合删除掉噢
相关文章:
从零开始优雅的使用mongodb实例的更多相关文章
- 单台MongoDB实例开启Oplog
背景 随着数据的积累,MongoDB中的数据量越来越大,数据分析团队从数据库中抽取变化数据(假如依据栏位createdatetime,transdatetime),越来越困难.我们知道MongoDB的 ...
- MongoDB实例重启失败探究(大事务Redo导致)
1.实例重启背景 收到监控组同学反馈,连接某一个MongoDB实例的应用耗时异常,并且出现了超时.查看数据库监控平台,发现此实例服务器的IO异常飙升,而查看副本集状态(rs.status()),主从是 ...
- asp.net的mongodb实例
mongodb为2.6版本, .net是4.0, c#接口时1.7. 运行环境为windows8 with visual studio2010 注意事项:在mongodb中使用地理位置存储信息且动用到 ...
- 利用golang优雅的实现单实例
平时编写代码过程中,经常会遇到对于全局角度只需运行一次的代码,比如全局初始化操作,设计模式中的单例模式.针对单例模式,java中又出现了饿汉模式.懒汉模式,再配合synchronized同步关键字来实 ...
- PHP 操作Mongodb 实例
缩略版本<?php //1.连接MongoDB $mongo = new Mongo(); $mongo = new Mongo("mongodb://username:passwor ...
- python操作mongodb实例
安装pymongo扩展 import pymongo; client = pymongo.MongoClient(host='10.48.176.170',port=27017); db = clie ...
- 从零开始配置Ubuntu 14.04&SSH&curl&Git&MongoDB&Node.js
从零开始配置Ubuntu 14.04 从零开始配置Ubuntu 14.04,记录配置服务的过程,安装组件如下: SSH curl Git MongoDB Node.js ... Ubuntu 安装 ...
- MongoDB在已有账号的实例下还原数据库报错的分析(error applying oplog)
一. 背景 今天在MongoDB 4.0.4版本下,在还原恢复数据库时报错. 主要错误为: Failed: restore error: error applying oplog: applyOps: ...
- [转]MongoDB更新操作replaceOne()实例讲解
最近正在学习MongoDB,作为数据库的学习当然是要从CRUD开始学起了.这篇文章默认读者是知道如何安装MongoDB.如何运行MongoDB实例以及了解了MongoDB中的collection.do ...
随机推荐
- [学习笔记]Java作用域变量申明和C、C++的差异性
Java作用域 大多数程序设计语言都提供了“作用域”(Scope)的概念.对于在作用域里定义的名字,作用域同时决定了它的“可见性”以及“存在时间”.在C,C++和Java 里,作用域是由花括号的位置决 ...
- sklearn,交叉验证中的分层抽样
StratifiedKFold用法类似Kfold,但是他是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同. 例子: import numpy as np from sklearn.m ...
- Ext.util.Format.date与Ext.Date.format区别, 转换时间戳
在Extjs中装时间戳使用如下两种都可以: Ext.util.Format.date(time,'U'); Ext.Date.format(time, 'U'); 为了找到它们的区别,查看源代码,以E ...
- 使用git pull提示refusing to merge unrelated histories
创建了一个origin,两个人分别clone 分别做完全不同的提交 第一个人git push成功 第二个人在执行git pull的时候,提示 fatal: refusing to merge unre ...
- LeetCode(39):组合总和
Medium! 题目描述: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates ...
- uva11610 树状数组+素数打表求因子,好题!
/* uva11610 树状数组+素数打表+离散化 打出的素数范围在2-1000000之间,不超过六位数,然后按照格式翻转成七位数 */ #include<bits/stdc++.h> u ...
- linux下安装ruby环境
安装步骤: ruby的shell叫irb,我们可以输入irb -v查看下irb的版本号 1.安装ruby解释器shell: yum install ruby-irb -y Installed: rub ...
- A. 【UR #17】滑稽树上滑稽果
题解: 首先很显然的是这是一条链(特殊数据说是链是故意让人迷茫的??) 然后 自己就开始yy 觉得每一次是加入一个使得当前值最小的数 然而这tm又是特殊数据?? 那就写一波发现是错的 考虑一下特殊数据 ...
- MQ确认机制之事务机制------tx
一:介绍 1.介绍 在前面的说的模式中会出现一个问题. 就是生产者将消息发送出去到底有没有到达rabbitMq,默认情况下是不知道. 有两种解决方式. AMQP实现事务机制 Confirm机制. 这里 ...
- 类的 __call__ 和__repr__ 方法
__call__: 让类实例可以被调用: __str__ , __repr__ : 两个都能是类实例名能被打印,区别在于repr可在交互是直接打印类名不用加print