Javascript mongodb集合中只允许一个文档
我正在为需要存储一些首选项的应用程序编写后端 我使用的是平均堆栈,因此后端是express+mongodb。我用猫鼬来做这个 数据库必须具有唯一的首选项文档,该文档在服务器启动时存在,并且只能更新。该文档也不应被覆盖(如果我重新启动服务器,如果该文档已在数据库中创建:请勿删除/修改它)。 但是我不知道如何只保存唯一(默认)文档一次。它从不进入pre.(“save”)回调 我已经做到了:Javascript mongodb集合中只允许一个文档,javascript,mongoose,mean-stack,Javascript,Mongoose,Mean Stack,我正在为需要存储一些首选项的应用程序编写后端 我使用的是平均堆栈,因此后端是express+mongodb。我用猫鼬来做这个 数据库必须具有唯一的首选项文档,该文档在服务器启动时存在,并且只能更新。该文档也不应被覆盖(如果我重新启动服务器,如果该文档已在数据库中创建:请勿删除/修改它)。 但是我不知道如何只保存唯一(默认)文档一次。它从不进入pre.(“save”)回调 我已经做到了: var mongoose = require('mongoose'), Schema = mongoose.S
var mongoose = require('mongoose'), Schema = mongoose.Schema;
var preferencesSchema = new Schema({
/* preference schema */
});
var Preferences = mongoose.model('Preferences', preferencesSchema);
var default_prefs = new Preferences({
/* default entry */
});
preferencesSchema.pre('save', function(next) {
var self = this;
/** NEVER GETS HERE **/
Preferences.find({}, function(err, pref_documents) {
if (pref_documents.length > 0) {
console.log("Skiping save because a preference already exists !");
next();
} else {
console.log("Not skiping !!");
next();
}
});
});
default_prefs.save(function(err, preferences) {
if (err)
console.log('error saving !!');
else
console.log("Saved Preferences: " + preferences);
});
为什么不直接使用配置文件呢?在定义
首选项
模型之前,您是否尝试过定义pre
操作?@Philipp:配置文件上有什么好的资源,更一般地说,如何设置配置?@Sam编写配置的最佳方式取决于您和您的用户需求。当您处于Javascript上下文中时,您可以将配置作为JSON对象写入另一个Javascript文件中。@Sam不,我指的是一个特定于应用程序的配置文件,其中应用程序的配置设置为特定于应用程序的格式。这种格式可以是您最方便解析和编辑的任何格式。我推荐使用JSON,因为当您使用Javascript时,会内置一个JSON解析器,JSON是一种非常人性化的格式,可以通过文本编辑器进行编辑。