在 Mongoose 中提交一个模型,其中包含一个具有 ObjectID 的数组



我有一个名为company的对象,里面有name(String)locations(Array)在位置内,我希望有一个名为name的密钥,用户将生成,并使用ObjectID生成的第二个密钥。 不幸的是,我无法让它按预期工作。

邮递员的例子。请注意,这些位置没有得到_id

出了什么问题?

我的模型

const mongoose = require('mongoose')
const companySchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: String,
locations: [
{
_id: mongoose.Schema.Types.ObjectId,
name: String
}
]
})
module.exports = mongoose.model('Company', companySchema)

我的控制器

createCompany: (req, res) => {
const { name, locations } = req.body
const company = new Company({
_id: new mongoose.Types.ObjectId(),
name: name,
locations: locations
})
company
.save()
.then(() => {
res.status(200).json({
company
})
})
.catch(error => {
res.status(500).json({
error
})
})
},

Mongoose 将为顶级和嵌套的文档数组本身创建_id,这是默认行为。

因此,仅使用所需的字段定义架构应该是它。

const companySchema = new mongoose.Schema({
name: String,
locations: [
{
name: String
}
]
});
module.exports = mongoose.model("Company", companySchema);

const locationSchema = new mongoose.Schema({
name: String
});
const companySchema = new mongoose.Schema({
name: String,
locations: [locationSchema]
});
module.exports = mongoose.model("Company", companySchema);

随后,您也不需要从 Model 对象创建_id

const company = new Company({
name: name,
locations: locations
});
company
.save()
.then(() => {})
.catch(e => {});

最新更新