使用push()和save()将对象推送到模式中

时间:2018-04-16 18:28:47

标签: mongodb express mongoose mongoose-schema

对于每个POST请求,我将使用用户坐标的标记保存到数据库。然后应该为每个标记分配一个用户。在我的用户模式中,我有一个键"标记",我想收集Marker类型的对象。整个POST请求如下所示:

http://example.com

我不知道为什么所有的时间"标记"数组是空的。

 router.post("/", function(req, res, next) {
  var decoded = jwt.decode(req.query.token);
  User.findById(decoded.user._id, function(err, user) {
    if (err) {
      return res.status(500).json({
        title: "An error occurred",
        error: err
      });
    }
    var marker = new Marker({
      name: req.body.name,
      date: new Date(),
      latitude: req.body.lat,
      longitude: req.body.lng,
      user: user._id
    });
    marker.save(function(err, result) {
      if (err) {
        console.log("ERRROR");
        return res.status(500).json({
          title: "An error occurred",
          error: err
        });
      }
      user.markers.push(result);
      user.save();
      res.status(201).json({
        message: "Saved message",
        obj: result
      });
    });
  });
});

似乎这些行无法正常工作(但用户对象和结果在控制台中显示正确的数据):

        {
            "_id": "5ad4d67962909c1784c6a069",
            "firstName": "test",
            "lastName": "test",
            "password": "$2a$10$E.yPFSG4eM/57Up8Se5QXe59upcURxUiofIKxrTkCKs1jfuS5PGnu",
            "email": "test@wp.pl",
            "__v": 0,
            "markers": []
        }

如果重要的话,我也会把我的用户mongoose架构放在这里:

 user.markers.push(result);
 user.save();

你能在这里给我一些建议吗?

0 个答案:

没有答案