2016-12-31 63 views
0

在条件books.update({“id”:{$ eq:bid}},{$ set:{“status”:login}} ... 当我使用变量出价它不起作用但如果我把smth像books.update({“id”:{$ eq:1}},{$ set:{“status”:login}}它工作得很好,我必须在我的项目中使用变量。Expressjs mongodb更新查询

节点代码的情况下,

app.get("/logged/:login/borrow/:bid/confirm", function(req,res){ 
    var login = req.params.login; 
    var bid = req.params.bid; 
    MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    console.log("Nawiązano połączenie z serwerem"); 
    var books = db.collection('books'); 
     books.update({"id": {$eq: bid}}, {$set:{"status": login}}, function(er, result){ 
     assert.equal(er, null); 
     res.redirect('/logged/'+login+'/borrow'); 
     }); 
    db.close(); 
    }); 
}); 

粘贴HJS文件

<a href="/logged/{{nick}}/return/{{id}}/confirm"></a> 
+0

完美的作品谢谢你。 – quimak

回答

0

我猜测id是一个数值,因为带有1的查询有效。

请求参数是字符串。将字符串转换为整数,你应该没问题。

var bid = parseInt(req.params.bid); 
0

也许req.params.bid给你一个字符串数字,因此它不匹配。 id字段可能正在查找1,但您会在变量出价中发送“1”。

尝试将出价转换为数字,然后检查。

bid = parseInt(bid,10);