Node.js 为什么';当没有输入任何内容时,`default`值在mongoose模式中不起作用吗?
这是我的模式,当我在提交“博客”帖子之前将HTML输入字段留空时,imageNode.js 为什么';当没有输入任何内容时,`default`值在mongoose模式中不起作用吗?,node.js,mongodb,express,database,Node.js,Mongodb,Express,Database,这是我的模式,当我在提交“博客”帖子之前将HTML输入字段留空时,imagedefault值似乎不起作用 这是进入数据库的输入 { __v: 0, title: '', body: '', _id: 583af591c460fca539b8f787, created: 2016-11-27T15:02:41.613Z, image: '' } 我不明白问题出在哪里,因为图像没有任何值,也没有设置默认值。清除空字符串和任何您认为不需要的内容。在将对象传递给mongo之前,可以
default
值似乎不起作用
这是进入数据库的输入
{ __v: 0,
title: '',
body: '',
_id: 583af591c460fca539b8f787,
created: 2016-11-27T15:02:41.613Z,
image: '' }
我不明白问题出在哪里,因为
图像没有任何值,也没有设置默认值。清除空字符串和任何您认为不需要的内容。在将对象传递给mongo之前,可以尝试此lodash函数
。.pickBy(updateObject,v=>v!==null&&v!==undefined&&v!==“”);//删除所有空、未定义和空字符串值
我通过添加一条if语句解决了这个问题,如下所示:
if(image === '') {
image = undefined;
}
我也有类似的困难,我选择使用一个带有默认值的变量。当您尝试执行POST请求时,它将被包括在内
var image = req.body.image || "some default value";
假设用户没有输入任何内容,则在将数据发送到后端时,默认情况下其值为null 如果将HTML字段留空,浏览器仍会将空字符串发送到服务器。因为您随后在模型实例中定义数据(在本例中为空字符串),所以Mongoose不会使用默认值。@slugonamission所以它基本上是发送一个空字符串,而且从技术上讲它仍然是一个字符串,所以Mongoose不会使用默认值?您知道解决此问题的方法吗?您的应用程序逻辑可以为您实现“默认”行为(即,如果发布了”
,请替换为未定义的,使Mongoose填写默认值,或手动填写默认值)。没有什么灵丹妙药能让猫鼬做到这一切you@slugonamission谢谢你的帮助。我真的很感激。我也有同样的问题,所以谢谢你。我最初还希望Mongoose将falsy空字符串视为非值。最好至少有一个设置来控制这个,defaultOnFalsy或者其他什么。。。
var image = req.body.image || "some default value";