使用猫鼬同步多个schmeas

时间:2017-04-22 22:45:30

标签: mongoose

我有一个目录,我定义了许多mongooose架构。 例如users.js:

var mongoose = require('mongoose')
, Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;

var users = new mongoose.Schema({
id: String,  // mongoose should create it automatically
username:String,
password:{ type: String, required: true, bcrypt: true },
})

users.plugin(require('mongoose-bcrypt'));

module.exports = mongoose.model('Users', users);

我想所有这些schemad添加到数据库中。所以我使用下一个文件db.js:

import fs from "fs";
import path from "path";
var mongoose = require('mongoose')

let db = null;

module.exports = app => {
  const config = app.libs.config;
  if (!db) {

      db = mongoose.createConnection(config.host, config.database);
    const dir = path.join(__dirname, "mongoModels");
    fs.readdirSync(dir).forEach(file => {
      const model = path.join(dir, file);

      db.models[model.name] = require(model);
    });

  }

  return db;
};

但是当我稍后尝试在代码中使用这些模型时,我发现它未定义。

我认为问题是什么 - 可能是因为模型没有同步到db。 在更改为mongo db之前,我在此应用程序中使用了sequelize, 在那里我有以下几行:

  //app.db.sequelize.sync().done(() => {
    app.listen(app.get("port"), () => {
      console.log(`Port ${app.get("port")}`);
      });
//  });

正如您所看到的,我评论了将所有已定义的模式同步到数据库的sync方法。有没有办法在mongoose中执行相同的命令? 或任何人有另一个想法可能是什么问题? 提前致谢

0 个答案:

没有答案