Nodejs无法在mongoDB

时间:2017-08-01 19:53:35

标签: javascript node.js mongodb express

我试图为公共汽车票务系统制作api,但我似乎无法在nodejs中找到它的工作方式

[
 {
  "id":1,
  "hour" : "7:30am"
  , "seats" : [
            0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0 ,0, 0
 ]
},
{
"id":2,
"hour" : "9:00am",
"seats" : [
            0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0, 0 ,
   0, 0, 0 ,0, 0
 ]
}

这是我的mongodb查询

db.schedules.update({"id":2}, {"$set" : {"seats.8" : "1"}});

在我尝试使用nodejs

之前,一切似乎都运行正常
router.put('/reserve/:id/:seat', function(req, res, next) {
  schedules.update({"id": req.params.id}, { "$set":{ "seats." + req.params.seat+: "1"}}, function(err, doc) {
    if (err) {
      console.log(err);
      return res.status(400).json({"error"});
    }
    if (doc.result.nModified) {
      res.status(200).json({"status": "ok"});
    } else {
      res.status(400).json({"error": "The seat hasn't been reserved"});
    }
  });

这是返回的错误:

  

SyntaxError:意外的标记+

我尝试了多种方法,但却无法正常工作

1 个答案:

答案 0 :(得分:1)

这里有无效的javascript语法:schedules.update({"id": req.params.id}, { "$set":{ "seats." + req.params.seat+: "1"}}无法在对象定义中连接字符串。

尝试使用属性引用表示法(将创建属性):

let updateObj = { $set: {} }
updateObject.$set['seats.' + req.params.seat] = '1'
schedules.update({"id": req.params.id}, updateObj, function ... )