2017-08-01 64 views
0

我試圖讓一輛公交車售票SISTEM的API在數組更新索引,但我似乎無法得到一個如何使它在工作的NodeJS的NodeJS不能在MongoDB中

[ 
{ 
    "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: Unexpected token +

我已經嘗試了多種方法並不能得到該工作

+0

你只是有一些錯別字。應該是'req.params.seat:「1」' – spicypumpkin

回答

1

您有無效的JavaScript語法在這裏:schedules.update({"id": req.params.id}, { "$set":{ "seats." + req.params.seat+: "1"}}不能Concat的對象中定義的字符串。

嘗試這樣,使用屬性的參考符號(這將創建屬性):

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

謝謝!它的工作,我是一個noob與nodejs和JavaScript和一般。 –

+0

模板字符串呢? {$ set:{'seats。$ {req.params.seat}':'1'}} – alexmac

+0

@alexmac您可能想避開格式化的反引號 – spicypumpkin