gpt4 book ai didi

node.js - 使用 mongoose 和 mongoose-version 更新条目时的新版本

转载 作者:太空宇宙 更新时间:2023-11-04 02:35:30 24 4
gpt4 key购买 nike

我正在尝试使用 mongoose 跟踪 mongo 数据库中某些文档的所有修订。因此,我决定使用插件 mongoose-version。

当我创建一个新文档并将其添加到数据库时,我可以看到一个版本保存在存储不同版本的集合中。但是,当我用新文档更新文档时,我可以看到存储该文档的集合(最新版本)中所做的更改,但看不到存储在版本化数据库中的新版本。有任何线索说明为什么会发生这种情况吗?

这是我的架构:

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.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);
}
});

这就是我更新用户详细信息的方式(基本上只有名称可以更改,但在我学习时出于演示目的)。

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);
}
);

任何帮助或提示将不胜感激,因为我也是使用 mongo 和 mongoose 的新手。

最佳答案

mongoose-version 目前不提供更新支持 ( https://github.com/saintedlama/mongoose-version/issues/25 )。原因是 Mongoose 的保存与更新的性质(没有钩子(Hook))。我相信 mongoose 现在有更新的钩子(Hook),但 mongoose-version 尚未为此更新。

您可能考虑的另一种选择是保存所有操作日志。取决于您的用例,但这可能是最容易设置/维护的,并且丢失更改的边缘情况应该少得多。

我不能相信这个建议。来自:http://www.askasya.com/post/bestversion/

关于node.js - 使用 mongoose 和 mongoose-version 更新条目时的新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22850393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com