我的代码如下所示:
router.put('/stories/:story', function(req,res,next){
Story.findById(req.story._id, function(err, story) {
if (err) {
res.send(err);
}
story.scenarios.push(req.body);
story.save(function(err,story) {
if (err) {
res.send(err);
}
res.json(story);
})
});
});
req.body包含一个带有图像和音频的对象。 我希望能够使用新对象更新此数组。 如何将新对象推送到story.scenario(开头为null)。
现在我收到错误:'无法读取属性推送null'
有谁知道解决方案?
答案 0 :(得分:4)
story.scenarios
一开始就是null
,因此您需要将其初始化为[]
,但您不希望自story.scenarios
以来一直这样做已有数据。
story.scenarios = story.scenarios || [];
story.scenarios.push(req.body);
答案 1 :(得分:2)
我假设参数中的story
是object
并且_id
出现了req.story
。但是你的代码仍然存在问题。
你不能只使用req.params
来访问传递的对象。使用Story.findById(req.params.story._id, function(err, story) {
...
});
访问所有此类对象。
将您的代码更改为此代码,它应该可以正常工作。
Story Schema
此外,我假设您在scenarios
中声明req.body
为数组,type
与您在架构中定义的driver.execute_script('document.getElementById("LIST_VAR2").textContent="10";')
相匹配。
答案 2 :(得分:2)
将story.scenarios初始化为空数组。 然后它调用push()函数。
前
story.scenarios = [];
story.scanarios.push(someData);