Mongodb没有更新

时间:2018-02-14 14:15:19

标签: node.js mongodb express

我有一个集合Trips,我希望能够将乘客添加到乘客阵列或与乘客一起创建一个阵列。此SO answer提到$push,但即使节点日志reserved seat on the trip和前端有Your seat has been reserved警报,集合也不会更新(Trips中没有乘客阵列)集合)。

//reserve a seat for a trip
app.post('/api/trips/:trip/:passenger',function(req,res){
    console.log('trip:'+req.params.trip)
    console.log('passenger:'+req.params.passenger)
    db.collection('Trips').update({'_id':req.params.trip},{ $push: { "passengers": req.params.passenger }},function(err,res){
        if(err) throw err

        console.log('reserved seat on the trip')
    })
    res.send('Your seat has been reserved')

})

Mongo 3.2.11

节点9.4.0

Express 4.15.5

我的MongoDB调用有问题吗?我错过了一步吗?

2 个答案:

答案 0 :(得分:1)

根据@Veeram评论,您需要传递正确的类型,在本例中为[ { $match: { ... } }, { $sort: { name:-1, price: -1 } }, { $skip: x }, { $limit: x + 20 } ]

正确的代码如下:

ObjectId

答案 1 :(得分:0)

目前我正在开发一个涉及node.js和mongodb的项目。 到目前为止,我发现从数据库发布/获取数据的最佳方法是使用mongoose。

这是我的server.js文件的后期部分。

app.post('/description', (req, res) => {

  var DescriptionModel = new descriptionModel({
    header: req.body.header,
    header_image: req.body.header_image,
    sub_heading: req.body.sub_heading,
    sub_heading_tagline: req.body.sub_heading_tagline,
    sub_heading_image_path: req.body.sub_heading_image_path,
    sub_heading_data: req.body.sub_heading_data,
    paralax_image_heading: req.body.paralax_image_heading,
    paralax_image_tagline: req.body.paralax_image_tagline,
    gallary_heading: req.body.gallary_heading,
    gallary_tagline: req.body.gallary_tagline,
    gallary_image_path: req.body.gallary_image_path
  });

  DescriptionModel.save().then((doc) => {
    res.send(doc);
  }, (e) => {
    res.status(400).send(e);
  })
});

我从html后的主体中获取数据,您可以直接输入您的数据。

我创建了一个已导入的模式文件。

如果您需要更多帮助,请在评论中提问,我将很乐意更详细地解释。