我有一个简单的表单,需要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!');
}
});
});
如果您需要其他信息,请告诉我们。
感谢您的帮助。
答案 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);