2017-02-03 1 views
1

저는이 문제에 정말로 어려움을 겪고 있습니다. 그래서 나는 누군가가 내가 왜 이런 행동을하는지 이해하도록 도와 줄 수 있기를 바랍니다.Nedb 업데이트는 기존 레코드를 업데이트하는 대신 새 레코드를 추가합니다.

는 내가 거기에 다음과 같은 기록과 파일 내 testdb.js에서

{"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"} 

이 내가 가진 파일 :

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의 지속성은 추가 전용 형식을 사용합니다. 즉, 성능상의 이유로 모든 업데이트와 삭제로 인해 실제로 데이터 파일의 끝에 행이 추가됩니다.

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

당신이 정말로 "갱신"그리고 당신이 당신의 데이터베이스를 압축 나는이 explenation 당신을 할 것을 믿지이 관련 질문을 참조해야한다 "삭제"하고 싶은 경우 성능이

관련 문제