2016-11-26 6 views
-1

ここで重要な機能は1クリック= 1票です.MongoDBの投票パラメータを更新し、MongoDB内でちょうど良い値になります。しかし、約5票の後、それは増分を停止する。私はブラウザをリフレッシュすると、次のリフレッシュまで5分増やしてからそれ以上は許されません。Mongoose付きExpress: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

なぜ 'findOneAndUpdate'を使うのですか?あなたはクエリを渡すことはありません。理由だけでは[#更新](http://mongoosejs.com/docs/api.html#model_Model.update) – David

+0

クエリを渡さずにデータベースの値を増やすにはどうすればよいでしょうか?これは、私が 'findOneAndUpdate'で達成したことのようなものです。もっと良い方法があれば教えてください。あなたのご意見ありがとうございます。 – jdev99

+0

あなたのコメントの最後のいくつかの言葉が見当たらなかったので、 'findOneAndUpdate'の代わりに' Update'を見てみましょう – jdev99

答えて

0

新DEVとIをインクリメントあなたがステータスを返さなければならないことを知らなかった。さもなければ、ブラウザは単に保留中のリクエストを構築するだろう。無知私は知っているが、うまくいけば、これは誰かを助ける。変更された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(); 
}); 
0

あなたが投票の値をインクリメントしたい場合は、単にその仕事は完全に罰金findAndModify.here私のクエリを使用して、それが投票値

db.getCollection('bikes').findAndModify({update:{$inc:{vote:1}}}) 
関連する問題