【发布时间】:2016-05-09 05:46:17
【问题描述】:
所以我试图在创建后将新的 Item 对象推送到 ToDo 对象中。完成后,我似乎无法将新项目添加到待办事项中。
这是我的两个架构:
var mongoose = require('mongoose');
var Item = new mongoose.Schema({
ItemName : String,
todo: { type: mongoose.Schema.Types.ObjectId, ref: 'Todo'}
});
mongoose.model('Item', Item);
var mongoose = require('mongoose');
var ToDo = new mongoose.Schema({
ToDoName : String,
items: [ {item : { type: mongoose.Schema.Types.ObjectId, ref: 'Item'}}]
});
mongoose.model('ToDo', ToDo);
我确定我的 app.post 创建项目有问题:
app.post('/todos/:todo_id/items', function(req, res, next) {
Item.create({
//_id : req.body.item_id,
ItemName : req.body.ItemName,
todoId : req.params.todo_id
}, function(err, item) {
if (err)
res.send(err);
// get and return all the items after you create another
Item.find(function(err, items) {
if (err)
res.send(err)
res.json(items);
});
item.save(function(err, item){
if(err){ return next(err); }
ToDo.items.push(item);
ToDo.save(function(err, todo) {
if(err){ return next(err); }
res.json(item);
});
});
});
});
我尝试了几种不同的解决方案,但通常会收到错误消息:“无法读取未定义的属性 'push'。”我真正需要做的就是将新项目添加到当前 ToDo 的 items 数组中。如果有人有任何想法,我将不胜感激!
提前致谢,
奎因
【问题讨论】:
标签: javascript node.js express mongoose mean-stack