模型(MongoDB)

模型(MongoDB)

ThinkJS 从 1.1.0 版本开始支持 MongoDB,底层依赖了 mongoose 模块,所以使用 MongoDB 时候需要在项目下安装 mongoose 模块。

npm install mongoose

配置

db_type: 'mongo', // 数据库类型
db_host: '127.0.0.1', // 服务器地址
db_port: '', // 端口
db_name: '', // 数据库名
db_user: '', // 用户名
db_pwd: '', // 密码

创建模型

MongoDB 的模型必须继承自 MongoModel,如:

module.exports = Model('MongoModel', {
    // 字段列表
    fields: {
      title:  String,
      author: String,
      body:   String,
      comments: [{body: String, date: Date}],
      date: {type: Date, default: Date.now},
      hidden: Boolean,
      meta: {
        votes: Number,
        favs:  Number
      }
    },
    //mongoose 模块里创建 Schema 的选项
    schema_options: {}})

CURD 操作

MongoDB 模型的 CURD 操作封装的接口和 Mysql 下一致。参考 CURD 操作。

其他

MongoDB 模型目前封装的接口还比较少,可以根据项目需要自己封装接口。可以使用下面的一些方法:

initDb()

获取 MongoDB 的连接句柄。

model()

获取当前模型的实例。如 add 方法的实现:

add: function(data){
  return this.model().then(function(model){
    var instance = new model(data);
    var deferred = getDefer();
    instance.save(function(err){
      if (err) {
        deferred.reject(err);
      }else{
        deferred.resolve();
      }
    })
    return deferred.promise;
  })
}

thinkRequire(‘mongoose’)

在模型中,可以通过 thinkRequire('mongoose') 来加载 mongoose 模块。


更多使用方式请见 mongoose 文档。