mongoose를 사용하여 mongo 데이터베이스에서 일부 문서의 모든 개정판을 추적하려고합니다. 이런 이유로 나는 플러그 접속 식 몽구스 버전으로 가기로 결정했다.mongoose 및 mongoose-version을 사용하여 항목을 업데이트 할 때 새 버전
새 문서를 만들고 데이터베이스에 추가하면 버전이 다른 버전을 저장하는 컬렉션에 유지된다는 것을 알 수 있습니다. 그러나 새 문서로 업데이트 할 때 문서를 저장하는 컬렉션 (최신 버전)에서는 변경 내용을 볼 수 있지만 버전 관리 데이터베이스에 저장된 새 버전은 볼 수 없습니다. 이것이 일어날 수있는 단서가 있습니까? ,
User.create({
name : request.body.FullName,
username : request.body.UserName,
email : request.body.Email,
modifiedOn: Date.now()
}, function (err, user) {
if (err) {
console.log(err);
if (err.code === 11000) {
response.redirect('/users/new?exists=true');
}
else {
response.send("Error while creating new user. The error code was " + err.code + " and the entire error " + err);
//response.redirect('users/new?error=true');
}
}
else {
console.log("User created and saved: " + user);
response.redirect('/users/' + user.username);
}
});
그리고 이것이 내가 기본적으로 이름 만 변경할 수 있습니다 (사용자의 정보를 업데이트하는 방법입니다
var userSchema = new mongoose.Schema({
name : String,
username : { 'type': String, 'unique': true },
email : { 'type': String, 'unique': true },
createdOn : { 'type': Date, 'default': Date.now },
modifiedOn: { 'type': Date, 'default': Date.now }
});
mongoose.model('User', userSchema, 'users');
// Versioning options
var userVersioningOptions = {
collection: 'versionedUsers',
logError: true,
suppressVersionIncrement: true, // default value
strategy: 'array',
removeVersions: false // default value
};
userSchema.plugin(version, userVersioningOptions);
이 내가 사용자를 만드는 방법은 다음과 같습니다
이 내 스키마입니다 하지만 내가 배우는 것처럼 데모 목적을위한 것입니다.)
User.update(
{username: newDetails.username},
{$set: {name: newDetails.name, modifiedOn: Date.now()}},
{upsert: false, multi: true},
function (err, numAffected) {
if (err)
throw err;
console.log("The error was " + err);
console.log("Updated " + numAffected + " documents");
response.send({}, 200);
}
);
나는 또한 몽구스와 몽구스를 사용하는 초보자이기 때문에 도움이나 힌트를 많이 주시면 감사하겠습니다.
행운이 하나? –
예. 나는 처음부터 의도 한 컬렉션을 사용하여 내 자신의 버전을 만들었습니다. 먼저, 컬렉션의 문서에 _revision이라는 속성을 추가했습니다. 그런 다음 내 코드에서 새 버전을 DB에 쓸 때마다이 값을 1 씩 증가시킵니다. 그런 다음 본질적으로 repo를 복제했고,'collection.js' 파일 (약 4-5 줄의 코드)에서 코드를 약간 수정/추가했습니다. 트릭은 오브젝트 ID가 무작위 (기본값)이고'_revision' 속성을 통해 적절한 버전을 참조하도록 복제 스키마를 만드는 것이 었습니다. – MightyMouse
그래서 복제 된 스키마는 문자 그대로 내가 저장하고 있던 최신 버전의 문서 사본이었습니다. 따라서 콘텐트를 수정하지 않았으므로주의를 기울여야하거나 돌보아야 할 실질적인 문제는 없었습니다. 복제하는 중이었습니다. https://github.com/saintedlama/mongoose-version/issues/9 – MightyMouse