Mongoose的增删改查

// 链接mongoose
const mongoose = require('mongoose');
const db       = mongoose.createConnection('mongodb:127.0.0.1:27017/NodeJS');

// 链接错误
db.on('error', error => console.log(error));

// Schema结构
const mongooseSchema = new mongoose.Schema({
	username: {type: String, default: '匿名用户'},
	title   : {type: String},
	content : {type: String},
	time    : {type: Date, default: Date.now()},
	age     : {type: Number},
	isshower: {type: Boolean, default: false}
});

// 添加mongoose实例方法
mongooseSchema.methods.findByUserName = function (userName, callback) {
	return this.model('mongoose').find({'username': userName}, callback);
}

// 添加mongoose静态方法,静态方法在model层能直接使用
mongooseSchema.statics.findByTitle = function (title, callback) {
	return this.model('mongoose').find({'title': title}, callback)
}

// 创建model
const mongooseModel = db.model('mongoose', mongooseSchema);
let doc = {username: 'model_demo_username', title: 'test_title', content: 'model_demo_content'};

// 增加记录,基于entity操作
let mongooseEntity = new mongooseModel(doc);
mongooseEntity.save((error) => {
	error ? throw error : console.log('Save ok');
	db.close();
})

// 增加记录,基于model操作
mongooseModel.create(doc, (error) => {
	error ? throw error : console.log('Save ok');
	db.close();
})

// 修改数据
mongooseModel.update(conditions, update, options, callback);
let conditions = {username: 'model_demo_username'};
let update = {$set: {age: 27, title: 'model_modify_title'}};
let options = {upsert: true};
mongooseModel.update(conditions, update, options, callback, (error) => {
	error ? throw error : console.log('update ok')
	db.close();
})

// 查询,基于实例方法的查询
let mongooseQuery = new mongooseEntity();
mongooseQuery.findByUserName('model_demo_username', (error, result) => {
	error ? throw error : console.log(result);
	db.close();
});

// 查询,基于静态方法查询
mongooseModel.findByTitle('model_demo_title', (error, result) => {
	error ? throw error : console.log(result);
	db.close();
})

// 查询,基于mongoose的find
let query = {title: 'emtity_demo_title'};
let fields = {title: 1, content: 1, time: 1}
let options = {}
mongooseModel.find(query, fields, options, (error, result) => {
	error ? throw error : console.log(result);
	db.close();
})

// 删除记录
let conditions = {title: 'emtity_demo_title'}
mongooseModel.remove(conditions, error => {
	error ? throw error : console.log('delete ok')
	db.close();
})

猜你喜欢

转载自my.oschina.net/chinahufei/blog/1824659