我有以下mongoose模式:
const CategoriesSchema = new mongoose.Schema(
{
sites: [
{
site: {
type: ObjectId,
ref: "Sites",
}
}
],
);
mongoose.model("Categories", CategoriesSchema, 'organizer-categories');
并且:
const SitesSchema = new Schema({
url: {
type: String,
required: true,
},
img: {
type: String,
},
});
mongoose.model("Sites", SitesSchema, "organizer-sites");,
下面的函数应该在mongodb中创建一个新站点,将站点添加到模式中所示的Categories中,并使用mongoose的populate方法返回更新的类别和新站点数据。但是只有站点的_id与类别数据一起返回。
exports.addSite = async (req, res) => {
const {categoryId, siteUrl} = req.body;
console.log('categoryId, siteUrl', categoryId, siteUrl)
try {
let site = await Sites.findOne({url: siteUrl});
console.log('site', site)
if(site) {
return res.status(422).send(`${siteUrl} already exists.`)
}
site = await Sites.create({url: siteUrl, categoryId});
// site = {url: siteUrl, categoryId};
const category = await Categories.findOneAndUpdate({
_id: categoryId
}, {
$addToSet: {
sites: site
}
}, {
new: true
}).populate({
path: 'sites.site',
model: 'Sites'
})
console.log('category', category)
res.status(201).json(category);
} catch(error) {
console.error(error);
return res.status(500).send('Error adding category.')
}
}
1条答案
按热度按时间piv4azn71#
架构中的
sites
字段包含不正确的引用数组。如果一个类别文档引用了一个站点文档数组,请按以下方式执行:请参见填充
一个工作示例:
日志: