这是对 D. Lowe 的回答的补充,该回答对我有用,但需要进行一些调整。(我会将此作为评论,但我没有这样做的声誉,我希望在几个月后再次遇到此问题时看到此信息,但我忘记了如何解决它。)
如果您要从另一个文件导入 Schema,则需要在导入的末尾添加 .schema。
注意:如果您不导入模式并使用本地模式,我不确定您是否得到 Invalid schema configuration,但导入对我来说更干净,更容易处理。
例如:
// ./models/other.js
const mongoose = require('mongoose')
const otherSchema = new mongoose.Schema({
content:String,
})
module.exports = mongoose.model('Other', otherSchema)
//*******************SEPERATE FILES*************************//
// ./models/master.js
const mongoose = require('mongoose')
//You will get the error "Invalid schema configuration: `model` is not a valid type" if you omit .schema at the end of the import
const Other=require('./other').schema
const masterSchema = new mongoose.Schema({
others:[Other],
singleOther:Other,
otherInObjectArray:[{
count:Number,
other:Other,
}],
})
module.exports = mongoose.model('Master', masterSchema);
然后,无论你在哪里使用它(对我来说,我在我的 Node.js API 中使用了类似的代码),你可以简单地将 other 分配给 master。
例如:
const Master= require('../models/master')
const Other=require('../models/other')
router.get('/generate-new-master', async (req, res)=>{
//load all others
const others=await Other.find()
//generate a new master from your others
const master=new Master({
others,
singleOther:others[0],
otherInObjectArray:[
{
count:1,
other:others[1],
},
{
count:5,
other:others[5],
},
],
})
await master.save()
res.json(master)
})