如何在空数组中推送对象

时间:2016-12-16 01:31:19

标签: angularjs node.js express mongoose

我的代码如下所示:

  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'

有谁知道解决方案?

3 个答案:

答案 0 :(得分:4)

story.scenarios一开始就是null,因此您需要将其初始化为[],但您不希望自story.scenarios以来一直这样做已有数据。

story.scenarios = story.scenarios || [];
story.scenarios.push(req.body); 

答案 1 :(得分:2)

我假设参数中的storyobject并且_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);