【问题标题】:Express w/ Mongoose: Can't increment beyond 5 or so incrementsExpress w/ Mongoose:增量不能超过 5 个左右
【发布时间】: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


【解决方案1】:

如果你想增加投票的价值,那么只需使用 findAndModify.here 我的查询它的工作非常好,它会增加投票价值

db.getCollection('bikes').findAndModify({update:{$inc:{vote:1}}})

【讨论】:

    【解决方案2】:

    新开发者,我不知道您必须发回状态,否则浏览器只会建立待处理的请求。我知道无知,但希望这可以帮助某人。修改后的 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();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-19
      • 2014-05-01
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多