这里的基本功能是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);
答案 0 :(得分:0)
如果你想增加投票价值,那么只需使用findAndModify.here我的查询工作完全正常,并增加投票价值
db.getCollection('bikes').findAndModify({update:{$inc:{vote:1}}})
答案 1 :(得分:0)
新开发者和我不知道你必须发回一个状态,否则浏览器只会建立待处理的请求。无知我知道,但希望这有助于某人。修改后的POST请求代码:
app.post('/bkyes', function(req, res, next) {
bkyes.update({$inc: { vote: 1 }})
.exec(function(err, foundObject) {
if (err) {
console.log(err);
}});
res.status(200).send();
});