我有一个目录,我定义了许多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中执行相同的命令? 或任何人有另一个想法可能是什么问题? 提前致谢