我试图简单地将1添加到我存储在JSON文件中的变量。
这就是我用来实现这一点的目的:
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。
答案 0 :(得分:2)
您使用flagCount拨打findOne
和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
})