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

时间:2015-03-03 12:41:56

标签: javascript mongoose mean-stack

我正在为需要存储一些偏好的应用程序编写后端。

我正在使用MEAN堆栈,因此后端是express + mongodb。我正在使用猫鼬。

数据库必须具有唯一的首选项文档,该文档在服务器启动时存在且只能更新。不应该覆盖此文档(如果我已经在db中创建了文档,则重新启动服务器:不要删除/修改它)。 但我无法弄清楚如何只保存一次唯一(默认)文档。它永远不会进入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);
});

0 个答案:

没有答案