簡體   English   中英

使用PUT和update()貓鼬遞增JSON字段

[英]Incrementing JSON field using PUT and update() mongoose

我正在嘗試將1存儲在JSON文件中的變量中簡單加1。

這就是我用來實現此目的的方法:

app.put('/api/listing/:street/:buildingNumber/:apartmentNumber/incrementFlagCount', function (req, res) {
        console.log("incrementing flag count now");

        mongoose.model('Listing').findOne(req.street, req.buildingNumber, req.apartmentNumber, function(err, listing){
            listing.update({
             //   $inc : {flagCount : 1}
                flagCount : flagCount+1
            },function(err){
                if(err){
                    res.send("There was a problem incrementing the flagCount of a listing: " + err);
                }
                else{
                    console.log("Flag count after=" + listing.flagCount);
                    res.json(listing.flagCount);
                }
            })
        });
    });

我收到以下錯誤: ReferenceError: flagCount is not defined這是JSON在mongolab中的外觀:

{
    "_id": {
        "$oid": "566c4bbabcda51a9eef08578"
    },
    "street": "test",
    "buildingNumber": 1,
    "apartmentNumber": 1,
    "beds": 1,
    "price": 1,
    "flagCount": 3,
    "owner": "56472a83bd9fa764158d0cb6"
}

我究竟做錯了什么? 我只想將flagCount加1。

您對findOne調用和帶有flagCount的update不正確。 findOne需要一個條件對象。

您還應該使用req.params.street而不是req.street等。

而不是先查找然后更新,如何使用findOneAndUpdate?

mongoose.model('Listing').findOneAndUpdate({street: req.params.street, 
buildingNumber: req.params.buildingNumber,
apartmentNumber: req.params.apartmentNumber}, {$inc: {flagCount: 1}}, 
    function(err, listing) {
     /// do stuff 
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM