我已经在控制器文件的函数中定义了模式模型,该模型在MongoDB中创建了一个新集合。我希望模型在路由文件中传递。我曾尝试根据自己的模式进行input_address.isEnabled = false
的操作,但在猫鼬的lib /索引文件上却遇到了错误:-const Thing = mongoose.model('admin.companyName');
。
我在控制器内的功能:-
throw new mongoose.Error.MissingSchemaError(name); MissingSchemaError: Schema hasn't been registered for model "admin.companyName".
Use mongoose.model(name, schema)
如何将var admin.save((err, doc) =>{
if(!err){
res.send(doc);
//make copy to Company collection
let arr = Object.keys(doc.schema.obj); //doc.schema.paths if I need same ID
let Obj = {};
arr.map(key => Obj[key] = doc[key]);
var thingSchema = new mongoose.Schema({}, { strict: false, collection: admin.companyName });
var Thing = mongoose.model(admin.companyName , thingSchema);
var thing = new Thing(Obj);
thing.save();
console.log(thing);
传递到路由文件,以便可以在我的 route 之一中使用:-
注意:- Thing = mongoose.model(admin.companyName , thingSchema);
的架构名称不是固定的,并且会不断更改
admin.companyName
编辑:-路由文件
const Thing = mongoose.model('admin.companyName');
Thing.updateOne( { emailResetTokenn: emailTokenn },{ $set: { verified: true }},(err) =>{ ......
答案 0 :(得分:0)
如果您要查找模型Thing
,则可以使用mongoose.modelNames()返回创建的所有模型名称的数组。
const Genre = mongoose.model('Genre', genreSchema);
const Book = mongoose.model('Book', bookSchema);
console.log(mongoose.modelNames()) // gives ['Genre', 'Book']
这只会为您提供模型名称,您需要弄清楚如何使用admin
属性找到所需的模型。
修改
如果请求对象中具有Admin
属性,则可以在路由处理程序的内部获取您需要的Thing模型:
router.get('/:adminId/verify',function(req,res){
console.log('request recieved');
const emailTokenn = req.query.id;
console.log(emailTokenn);
Admin.FindOne({_id: req.params.adminId})
.exec()
.then(admin => {
const Thing = mongoose.model(admin.companyName);
Thing.updateOne( { emailResetTokenn: emailTokenn },{ $set: { verified: true }},(err) =>{})
})