1.回调方法
1.1.建立连接
var db = mongoose.createConnection('localhost','test');
1.2.检测是否连接成功
db.on('error',console.error.bind(console,'连接错误:')); db.once('open',function(){ // 连接成功 });
1.3.操作数据库
1.3.1.定义schema
var PersonSchema = new mongoose.Schema({ name:String //定义一个属性name,类型为String });
1.3.2.将该schema发布为model
var PersonModel = db.model('Person',PersonSchema); //如果该Model已经发布,则可以直接通过名字索引到,如下: //var PersonModel = db.model('Person'); //如果没有发布,上一段代码将会异常
1.3.3.用Model创建Entity
var personEntity = new PersonModel({name:'Krouky'}); //打印这个实体的名字看看 console.log(personEntity.name); //Krouky
1.3.4.对数据库进行操作
// 数据保存 personEntity.save(); // 数据查询 PersonModel.find(function(err,persons){ //查询到的所有person });
最后总结代码如下:
var mongoose = require("mongoose"); var db = mongoose.createConnection('localhost','test'); db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { var PersonSchema = new mongoose.Schema({ name: String //定义一个属性name,类型为String }); var PersonModel = db.model('Person',PersonSchema); var personEntity = new PersonModel({name:'Krouky'}); console.log(personEntity.name); personEntity.save(); PersonModel.find(function(err,persons){ console.log(persons); }); });
结果如下:
2.优化版
var mongoose = require('mongoose'); mongoose.Promise = global.Promise; var Schema = mongoose.Schema; var ObjectId = Schema.ObjectId; mongoose.connect('mongodb://127.0.0.1/test'); function saveData(biaoname){ var saveSchema = new Schema({ type: String, date: Date, title: String }); try{ var saveModel = mongoose.model(biaoname, saveSchema); }catch(e){ var saveModel = mongoose.model(biaoname); } var saveEntity = new saveModel({ type: 'saveModel', title: 'lineofsaveModel' }); saveEntity.save(function(err,data){ console.log(err,data); }); } function getData(biaoname){ var saveSchema = new Schema({ type: String, date: Date, title: String }); try{ var saveModel = mongoose.model(biaoname, saveSchema); }catch(e){ var saveModel = mongoose.model(biaoname); } saveModel.find({}, function(err,data){ console.log(err,data); }); } saveData('biao1'); saveData('biao3'); getData('biao3');
注意
(i).连接上之后,就可以进行操作了,只用连接一次。
(ii).promise的使用:
默认的是链式查询,而使用bluebird后可支持回调式。
(iii).mongoose版本4.10.8
3.测试代码(demo):
mongoose–github
参考文章:
Built-in Promises
DeprecationWarning: Mongoose: mpromise
npm mongoose