javascript-mongodb express-猫鼬不保存“默认”值

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

我想要做的是为名为author的字符串设置默认值,以防万一它留空.

如果仅使用默认值构建模型,则当字段保留为空时,会将空字符串写入数据库,但是当我使用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!');
        }
    });
});

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

谢谢您的帮助.

解决方法:

仅当在新文档中不存在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);
上一篇:Javascript-MongoDB / Mongoose-仅当特定字段唯一时,才将对象添加到对象数组


下一篇:JavaScript-对象属性上的Mongoose findOne