我用这个破坏了我的头脑。我想将集合名称传递给Mongoose Schema对象实例的模型构造函数。
let mongoose = require('mongoose'),
Schema = mongoose.Schema;
let schema = new Schema({
name: {type: String}
}, { collection: 'testing' });
module.exports = mongoose.model("Item", schema);
我可以使用如上所示的collection参数将其从项目更改为测试。我也尝试通过对象上的方法设置属性。它设置正确,如预保存挂钩中所示。但该实例仍使用原始集合名称。我想从调用代码中传入一个集合名称。
let schema = require(path.join(__rel__, __models__, "schema"));
let item = new schema(itemObject);
item.save(function(err, item) {});
我想要一些传递该对象的新集合名称的方法来存储。
答案 0 :(得分:0)
我已将架构修改为:
module.exports = function(collectionName) {
return mongoose.model("Item", ItemSchema, collectionName);
};
并称之为:
Item = require(path.join(__rel__, __models__, "ItemSchema"))
("the_collection_name")
工作正常。
答案 1 :(得分:0)
我声明了下面的架构
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const marksSchema = new Schema({
username: String,
year: Number,
section: String,
week: Number,
marks: [{
qid: String,
questionName: String,
marksScored: Number,
isAttempted: Boolean
}],
quizmarks:Number,
});
module.exports = mongoose.model('marks', marksSchema, 'marks');
并在server.js中将其引用如下
const Marks = require('../models/Marks');
models是包含我所有模式的文件夹,它是我的server.js
之外的目录