我正在尝试将类别文档的ID添加到预算文档中。以下是我的预算架构。
var {mongoose} = require('../db/mongoose');
var budgetsSchema = new mongoose.Schema({
year: Number,
categoryIDs: [{type:mongoose.Schema.ObjectId,
ref: 'categories'}]
});
var Budgets = mongoose.model('Budgets', budgetsSchema);
module.exports = {
Budgets
};
这是我的类别集合的架构。
var {mongoose} = require('../db/mongoose');
var categorySchema = mongoose.Schema({
name: String,
amount: Number,
sub_categories: [{
name: String,
amount: Number
}]
})
var categories = mongoose.model('categories', categorySchema);
module.exports = {
categories
};
要发布类别,我使用此快速发布请求将类别添加到类别集合中,并将其ID添加到预算集合中。
//The ID is the Budget ID
app.post('/categories/:id', (req, res) => {
var id = req.params.id;
var sub_categories = req.body.sub_categories;
var category = new categories({
name: req.body.name,
amount: req.body.amount,
sub_categories
})
category.save().then((docs) => {
res.send(docs);
console.log(docs)
}).catch((e) => res.status(404).send(e));
Budgets.findById(id).then((docs) => {
if(!docs) {
res.status(404).send();
}
docs.categoryIDs.push(category._id);
}).catch((e) => {
res.send(e).status(404);
})
})
运行此命令时,它确实将类别添加到集合中,但没有将ID添加到“预算”文档中的categoryIDs数组中。请帮助
答案 0 :(得分:1)
首先,如mongoose docs中所述,将模型名称从Plural
更改为Singular
,以避免混淆:
第一个参数是模型集合的单数名称 是为了。猫鼬会自动寻找您的复数形式 型号名称。因此,对于上面的示例,模型Tank用于 坦克收集在数据库中。 .model()函数进行复制 模式。确保已添加所有要模式化的内容 在调用.model()之前!
因此,categories
至Category
和Budgets
至Budget
。请在Mongoose docs ref此处new
之前验证mongoose.model
。
var categorySchema = new mongoose.Schema({
name: String,
amount: Number,
sub_categories: [{
name: String,
amount: Number
}]
})