-1

こんにちは、なぜこの関数が何もせず、コンソールに何も表示されず、コールバック関数が機能しなかったのかわかりません。明らかな間違いを犯した場合は申し訳ありません。ノード js と NeDb は初めてです。 .

ここに私の更新機能があります:

var Datastore = require('nedb'),
    db = {
        games: new Datastore({filename: './backend/data/games.db', autoload: true})
    };

var models = { 
     games : {
              update: function (query, update, options, callback) {
                           db.games.update(query, update, options,callback)
             }
            }
           }
module.exports = models;

そして私は次のように呼びました:

var models = require('./models');

models.games.update({_id = game_id}, {$set: {fen: game.fen(), pgn: game.pgn()}}, {}, function(err,numDocs,docs){
      if (err){
         console.log(err);
      } else {
         console.log(numDocs);
         console.log(docs);
      }
    });

mi データベースは次のようになります。

{"_id":"Egw17uRnAd5sdaKXVlOfxRQ6zr4VnSvFghiXkXHyCi9oiDMqDS","startpos":"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1","fen":"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1","pgn":"","w_id":"","b_id":""}
{"_id":"6ZlTTQgk2hEhorTGeTV45kkRsUvrxfmROiCJMqLRQoTnvabhqK","startpos":"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1","fen":"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1","pgn":"","w_id":"","b_id":""} 

およびクエリの変数

game_id = '6ZlTTQgk2hEhorTGeTV45kkRsUvrxfmROiCJMqLRQoTnvabhqK'
game.pgn() = '1. e4 e5 2. Nf3'
game.fen() = 'rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2'

更新 1

分離されたモジュールではなく、すべてのコードをまとめると、完全に機能します

var Datastore = require('nedb'),
    db = {
          games: new Datastore({filename: './backend/data/games.db', autoload: true})
          };
db.games.update({_id : game_id}, {$set: {fen: game.fen(), pgn: game.pgn()}}, {}, function(err,numDocs,docs){
   if (err){
       console.log(err);
   } else {
       console.log(numDocs);
       console.log(docs);
   }
});

たぶん、別のモジュールで動作しているものです

簡単にするためにUPDATE 2

models.js ファイル

    var Datastore = require('nedb'),
        db = {
            games: new Datastore({filename: 'database.db', autoload: true})
        };


    var models = {
        games: {
            create: function (id, startpos, fen, pgn, w_id, b_id, callback) {
                db.games.insert({_id: id, startpos: startpos, fen: fen, pgn: pgn, w_id: w_id, b_id: b_id}, callback);
            },
            update: function (query, update, options, callback) {
                db.games.update(query, update, options, callback)
            }
        }
    };

    module.exports = models;

runupdate.js ファイル

    var models = require('./models');

    models.games.create('6ZlTTQgk2hEhorTGeTV45kkRsUvrxfmROiCJMqLRQoTnvabhqK', 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1', 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1', '', '', '');

    models.games.update({_id: '6ZlTTQgk2hEhorTGeTV45kkRsUvrxfmROiCJMqLRQoTnvabhqK'}, {$set: {fen: 'r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/5N2/PPPP1PPP/RNBQ1RK1 b kq - 5 4', pgn: '1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. O-O'}}, {}, function(err,numDocs,docs){
        if (err){
            console.log(err);
        } else {
            console.log(numDocs);
        }
    });
4

1 に答える 1

1

update メソッドの呼び出し中にタイプミスがあります。

{_id = game_id}でクエリを変更{_id : game_id}

アップデート :

新しい関数の代わりに models.games.update を変更し、db.games.update次のコード ブロックのように直接割り当ててみてください。

var models = {
  games : {
     update : db.games.update
  }
}

と呼ぶかもしれませんmodels.games.update(/*queries and cb functions*/)

于 2015-08-18T16:15:23.160 に答える