mongodb + express - mongoose not saving' default'值

时间:2016-03-06 14:15:02

标签: javascript node.js express mongoose

我有一个简单的表单,需要3个字符串输入。我使用$scope将这些绑定到ng-model

我希望能够做的是设置一个名为author的字符串的默认值,以防它被留空。

如果我只使用default构建模型,当字段变空时,会将空字符串写入我的数据库,但是当我使用require时,也不会写入任何内容(db返回误差)。

有人可以解释我做错了吗?

模式:

var wordsSchema = new Schema({
  author: {
    type: String,
    default: 'unknown',
    index: true
  },
  source: String,
  quote: {
    type: String,
    unique: true,
    required: true
  }
});

表达API端点:

app.post('/API/addWords', function(req, res) {
    //get user from request body
    var words = req.body;

    var newWords = new Words({
        author: words.author,
        source: words.source,
        quote: words.quote
    });

    newWords.save(function(err) {
        if (err) {
            console.log(err);
        } else {
            console.log('words saved!');
        }
    });
});

如果您需要其他信息,请告诉我们。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

仅当author字段本身不存在于新文档中时,才会使用架构中的default值。因此,您需要使用以下内容预处理收到的数据以获得所需的行为:

var words = {
    source: req.body.source,
    quote: req.body.quote
};

if (req.body.author) {
    words.author = req.body.author;
}

var newWords = new Words(words);