2017-02-03 3 views
1

Я действительно борюсь с этим, поэтому я надеюсь, что кто-то может помочь мне понять, почему я получаю такое поведение.Обновления Nedb добавляют новые записи вместо обновления существующего

У меня есть файл со следующими записями в нем

{"Id":"","documentPath":"mission.pdf","dName":"BIOLOGY TEST 1110","dCourseNumber":"1110","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1110","student":"491502","timestamp":1486152313972,"assessed":true,"errorCmt":"","uploadDate":"2/3/2017 14:5","_id":"QwKHQ8sRQdivRJDp"} 
{"Id":"","documentPath":"university.pdf","dName":"BIOLOGY TEST 1111","dCourseNumber":"1111","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1111","student":"491502","timestamp":1486151521825,"assessed":false,"errorCmt":"","uploadDate":"2/3/2017 13:52","_id":"mh0pdGERB6fZU4s3"} 

в моем testdb.js файл у меня есть:

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

db.update({ _id: "QwKHQ8sRQdivRJDp"}, { $set: { assessed: true} }, {}, function (err, numReplaced) { 
    console.log("replaced---->" + numReplaced); 
}); 

db.find({}).exec(function (err, docs) {console.log(docs);}); 

Находка я выполняю в конце показывает, что я обновил одну запись и распечатывает записи, и они выглядят так, как я их ожидаю. Если я открываю db.db теперь я вижу это:

{"Id":"","documentPath":"mission.pdf","dName":"BIOLOGY TEST 1110","dCourseNumber":"1110","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1110","student":"491502","timestamp":1486152313972,"assessed":true,"errorCmt":"","uploadDate":"2/3/2017 14:5","_id":"QwKHQ8sRQdivRJDp"} 
{"Id":"","documentPath":"university.pdf","dName":"BIOLOGY TEST 1111","dCourseNumber":"1111","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1111","student":"491502","timestamp":1486151521825,"assessed":false,"errorCmt":"","uploadDate":"2/3/2017 13:52","_id":"mh0pdGERB6fZU4s3"} 
{"Id":"","documentPath":"mission.pdf","dName":"BIOLOGY TEST 1110","dCourseNumber":"1110","dSubject":"BIOL","dTerm":"201690","dTitle":"BIOLOGY TEST 1110","student":"491502","timestamp":1486152313972,"assessed":true,"errorCmt":"","uploadDate":"2/3/2017 14:5","_id":"QwKHQ8sRQdivRJDp"} 

Любая идея, почему моя запись дублирует с новым значением, а не просто получать обновляется?

ответ

1

Таким образом, это объясняется в документации.

Под капотом постоянство NeDB использует только формат append, что означает, что все обновления и удаления фактически приводят к строкам, добавленным в конце файла данных, по соображениям производительности.

-1
return this.db.update({ _id: "QwKHQ8sRQdivRJDp"}, { $set: { assessed: true} }, function (err, numReplaced) { 
    if (err) { 
     console.log("error---->" + err); 
    } else { 
     console.log("replaced---->" + numReplaced); 
    } 
}); 

Попробуйте

1

NEBD использовать конкатенирующий только топот для исполнения, если вы действительно хотите «обновление» и «удалить» Вы должны уплотнить свою базу данных, увидеть этот родственный вопрос я верю, что это explenation позволит вам узнать больше о Nedb - nedb method update and delete creates a new entry instead updating existing one

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