Ceci s'ajoute à la réponse de D. Lowe qui a fonctionné pour moi mais qui a nécessité quelques ajustements. (J'aurais bien mis cela en commentaire mais je n'ai pas la réputation de le faire, et j'aimerais retrouver cette information dans quelques mois lorsque je rencontrerai à nouveau ce problème mais que j'aurai oublié comment le résoudre).
Si vous importez un schéma à partir d'un autre fichier, vous devrez ajouter .schema à la fin de l'importation.
Note : Je ne sais pas si vous obtenez la configuration de schéma invalide si vous n'importez pas de schémas et utilisez des schémas locaux à la place, mais l'importation est simplement plus propre et plus facile à gérer pour moi.
Par exemple :
// ./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);
Ensuite, quel que soit l'endroit où vous l'utilisez (pour moi, j'ai utilisé un code similaire à celui-ci dans mon API Node.js), vous pouvez simplement assigner l'autre au maître.
Par exemple :
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)
})