Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb集合中只允许一个文档_Javascript_Mongoose_Mean Stack - Fatal编程技术网

Javascript mongodb集合中只允许一个文档

Javascript mongodb集合中只允许一个文档,javascript,mongoose,mean-stack,Javascript,Mongoose,Mean Stack,我正在为需要存储一些首选项的应用程序编写后端 我使用的是平均堆栈,因此后端是express+mongodb。我用猫鼬来做这个 数据库必须具有唯一的首选项文档,该文档在服务器启动时存在,并且只能更新。该文档也不应被覆盖(如果我重新启动服务器,如果该文档已在数据库中创建:请勿删除/修改它)。 但是我不知道如何只保存唯一(默认)文档一次。它从不进入pre.(“save”)回调 我已经做到了: var mongoose = require('mongoose'), Schema = mongoose.S

我正在为需要存储一些首选项的应用程序编写后端

我使用的是平均堆栈,因此后端是express+mongodb。我用猫鼬来做这个

数据库必须具有唯一的首选项文档,该文档在服务器启动时存在,并且只能更新。该文档也不应被覆盖(如果我重新启动服务器,如果该文档已在数据库中创建:请勿删除/修改它)。 但是我不知道如何只保存唯一(默认)文档一次。它从不进入pre.(“save”)回调

我已经做到了:

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是一种非常人性化的格式,可以通过文本编辑器进行编辑。