2015-08-18 2 views
-1

Привет, я не знаю, почему эта функция ничего не делала, даже ничего не показывала на консоли, и функция обратного вызова не работала, Извините, если я сделал очевидный Ошибка. Я новичок в узле js и NeDb.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); 
     } 
    }); 

миль базы данных выглядит следующим образом:

{"_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' 

UPDATE 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); 
     } 
    }); 
+0

Вы пытались вызвать 'db.games.update (запрос, обновление, параметры, обратный вызов)' непосредственно вместо 'models.games.update'? –

+0

да и в результате это samme, без обновления – efirvida

ответ

1

Существует опечатка во время вызова метода обновления.

{_id = game_id} запрос изменения с {_id : game_id}

Update:

Попробуйте изменить models.games.update вместо новой функции и непосредственно назначать db.games.update как следующий блок кода.

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

и вы можете позвонить по телефону models.games.update(/*queries and cb functions*/).

+0

спасибо, но не решила проблему, все еще не обновляя записи – efirvida

+0

вы отлаживали свое приложение? отметьте точку останова на db.games.update и ваши обратные вызовы, мы уверены, что ваш метод db.games.update работает. Потому что у вас нет ошибки или какого-либо журнала. –

+0

Я обновляю сообщение, я забыл сказать, что конфигурация базы данных находится на разделенном модуле, может быть, это причина – efirvida

Смежные вопросы