【发布时间】:2016-11-26 03:11:58
【问题描述】:
这里的基本功能是 1 点击 = 1 票,它会更新 MongoDB 中的投票参数,并且它在 MongoDB 中递增就好了。然而,在大约 5 票之后,它停止增加。当我刷新浏览器时,它允许我再增加 5 个增量,然后直到下一次刷新为止..
我是否遗漏了什么,可能与“findOneAndUpdate”方法有关?我试过只使用“更新”方法,行为是一样的。我检查了文档,发现没有提到“$inc”增量/时间/间隔限制。这是我的 server.js:
var express = require('express');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bodyParser = require('body-parser');
var app = express();
mongoose.connect('mongodb://localhost:27017/food');
//Allow all requests from all domains & localhost
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods", "POST, GET");
next();
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var usersSchema = new Schema({
id: String,
vote: Number
});
var bkyes = mongoose.model('bkyes', usersSchema);
app.get('/bkyes', function(req, res) {
bkyes.find({}, function(err, bkyes) {
res.send(bkyes);
});
});
app.post('/bkyes', function(req, res, next) {
bkyes.findOneAndUpdate({$inc: { vote: 1 }})
.exec(function(err, foundObject) {
if (err) {
console.log(err);
}});
});
app.listen(3000);
【问题讨论】:
-
为什么要使用
findOneAndUpdate?您没有传递查询。为什么不只是#update -
你会建议什么方法不传入查询而只是增加数据库中的值?这就是我用“findOneAndUpdate”完成的,如果有更好的方法,请告诉我。感谢您的意见。
-
对不起,我没有看到你评论的最后几句话,我现在看
Update而不是findOneAndUpdate -
update有同样的问题。当我刷新浏览器时,它允许我再增加 5 个增量,然后直到下一次刷新..
标签: javascript node.js mongodb express