var uri = 'mongodb://username:password@hostname:port/databasename'
mongoose.connect(uri); Model与Schema
Model使nodejs对象和MongoDB中的文档相对应,Schema实现了Model的数据类型和结构的定义,从而在无模式的MongoDB中实现了模式化的存储。 model.js
/** 配置并链接MongoDB **/
var mongoose = require('mongoose');
var uri = 'mongodb://localhost/mongoose-base';
mongoose.connect(uri);
/** 创建Schema、创建Model **/
var BookSchema = new mongoose.Schema({
name: String,
author: String,
publishTime: Date
});
mongoose.model('Book', BookSchema); 创建文档 insert.js
var mongoose = require('mongoose');
require('./model.js');
/** 获取Model,创建Book的实例 Entity **/
var Book = mongoose.model('Book');
var book = new Book({
name: 'MEAN Web Develop',
author: 'Green',
publishTime: new Date()
});
book.author = 'Jim'; // 参数可以重新指定
/** 插入数据 **/
book.save(function(err) { // 执行保存,并查看返回情况
console.log('save status:', err ? 'failed' : 'success');
}) 简单查询 find.js
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
/** 查询所有数据 **/
Book.find({}, function(err, docs) {
if (err) {
console.log('err:', err);
return;
}
console.log(docs)
}) findOne.js
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
/** 查询一条数据,并修改 **/
Book.findOne({author: 'Jim'}, function(err, doc) {
if (err) {
console.log('err:', err);
return;
}
doc.author = 'James';
doc.save();
console.log('findOne result:', doc)
}) 删除文档 remove.js
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
Book.findOne({ author: 'Jim' }, function(err, doc) {
if (err) {
console.log('findOne err:', err);
return;
}
if (doc) {
doc.remove();
}
}) 条件语句
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
var cond = {
$or: [
{author: 'Jim'},
{author: 'James'}
]
};
Book.find(cond, function(err, docs){
if(err) {
console.log('find by cond err:', err);
}
console.log('cond:', cond, 'result:', docs);
})
var mongoose = require('mongoose');
var config = require('./config.js');
module.exports = function() {
var db = mongoose.connect(config.mongodb);
require('../models/user.server.model.js');
return db;
} 全局引入mongoose
在app.js的路由模块前引用刚才创建的mongoose配置信息(8,9两行)
1 var express = require('express');
2 var path = require('path');
3 var favicon = require('serve-favicon');
4 var logger = require('morgan');
5 var cookieParser = require('cookie-parser');
6 var bodyParser = require('body-parser');
7
8 var mongoose = require('./config/mongoose.js');
9 var db = mongoose();
10
11 var index = require('./routes/index');
12 var users = require('./routes/users'); 创建Schema和Model
新建models文件夹 /models/user.server.model.js
var mongoose = require('mongoose');
var UserSchema = new mongoose.Schema({
uid: Number,
username: String,
createTime: Date,
lastLogin: Date
});
mongoose.model('User', UserSchema); 编写数据库处理逻辑代码
我们直接在users路由模块中加入数据库存取操作的代码 /routes/users.js
1 var express = require('express');
2 var router = express.Router();
3
4 var mongoose = require('mongoose');
5 var User = mongoose.model('User');
6
7 /* GET users listing. */
8 router.get('/', function(req, res, next) {
9 res.send('respond with a resource');
10 });
11
12 router.get('/test', function(req, res, next) {
13 var user = new User({
14 uid: 1,
15 username: 'nuanfeng'
16 })
17
18 user.save(function(err){
19 if(err) {
20 res.end('Error');
21 return next();
22 }
23
24 User.find({}, function(err, docs) {
25 if(err) {
26 res.end('Error');
27 return next();
28 }
29
30 res.json(docs);
31 })
32 })
33 })
34
35 module.exports = router; 运行node查看效果