我是后端开发的新手。我正在使用带有 express 和 mongoose 的 nodejs 我已经使用主要包含文本的表单中的数据成功更新了 mongodb,因此 <input type="text value="abcdefg">
似乎工作正常。
我有一个属性字段 isActive
,我希望它是布尔值并且值为 true
或 false
我尝试这样做
<input type="text" value="true">
而且我认为这是错误的,基于一些谷歌搜索 (https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes),其中提到 “布尔属性不允许使用值“真”和“假”。为了表示假值,属性必须完全省略。”...所以我尝试了复选框方法
<input type="checkbox" checked>
但在这里我得到 value = 'on' 并且它仍然在控制台中给我一些错误
messageFormat: undefined,
stringValue: '"on"',
kind: 'Boolean',
value: 'on',
path: 'isActive',
reason: CastError: Cast to boolean failed for value "on" (type string) at path "undefined"
有人可以告诉我如何定义输入字段以在 Mongodb 中获取 true
或 false
值吗?
答案 0 :(得分:0)
回答我自己的问题,以防万一它可以帮助像我这样的后端开发新手。
当服务器收到请求时,常规输入变量遵循此格式
databaseObject.name = request.body.name
我假设即使对于布尔值,它也是相同的方法,所以我试图这样做。
databaseObject.isActive = request.body.isActive
其中表单中的 isActive
是复选框字段的结果。
对我有用的是这个..
databaseObject.isActive = request.body.isActive == "on" ? true : false;
当复选框被选中时返回“on”而不是 true
这对其他人来说可能很明显,但对我来说不是......所以也许这个回答可能会帮助一些人,他们可能会尝试将输入中的所有值直接分配到正在保存到数据库中的对象中。
>如果有另一种方法可以做到这一点,我欢迎更多答案,因为这是我发现的,因为我的问题没有得到答复。因此,欢迎提供更好的答案或确认上述内容是正确的。