模型(MongoDB)

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

  1. npm install mongoose

配置

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

创建模型

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

  1. module.exports = Model('MongoModel', {
  2. // 字段列表
  3. fields: {
  4. title: String,
  5. author: String,
  6. body: String,
  7. comments: [{body: String, date: Date}],
  8. date: {type: Date, default: Date.now},
  9. hidden: Boolean,
  10. meta: {
  11. votes: Number,
  12. favs: Number
  13. }
  14. },
  15. //mongoose 模块里创建 Schema 的选项
  16. schema_options: {}})

CURD 操作

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

其他

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

initDb()

获取 MongoDB 的连接句柄。

model()

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

  1. add: function(data){
  2. return this.model().then(function(model){
  3. var instance = new model(data);
  4. var deferred = getDefer();
  5. instance.save(function(err){
  6. if (err) {
  7. deferred.reject(err);
  8. }else{
  9. deferred.resolve();
  10. }
  11. })
  12. return deferred.promise;
  13. })
  14. }

thinkRequire(‘mongoose’)

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


更多使用方式请见 mongoose 文档