如何使用 nodejs 在 MongoDB 中将布尔属性设置为 true 或 false

时间:2021-07-20 12:48:28

标签: javascript node.js mongodb express mongoose

我是后端开发的新手。我正在使用带有 express 和 mongoose 的 nodejs 我已经使用主要包含文本的表单中的数据成功更新了 mongodb,因此 <input type="text value="abcdefg"> 似乎工作正常。

我有一个属性字段 isActive,我希望它是布尔值并且值为 truefalse

我尝试这样做

<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 中获取 truefalse 值吗?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,以防万一它可以帮助像我这样的后端开发新手。

当服务器收到请求时,常规输入变量遵循此格式

databaseObject.name = request.body.name

我假设即使对于布尔值,它也是相同的方法,所以我试图这样做。

databaseObject.isActive = request.body.isActive 其中表单中的 isActive 是复选框字段的结果。

对我有用的是这个..

databaseObject.isActive = request.body.isActive == "on" ? true : false;

当复选框被选中时返回“on”而不是 true

这对其他人来说可能很明显,但对我来说不是......所以也许这个回答可能会帮助一些人,他们可能会尝试将输入中的所有值直接分配到正在保存到数据库中的对象中。

>

如果有另一种方法可以做到这一点,我欢迎更多答案,因为这是我发现的,因为我的问题没有得到答复。因此,欢迎提供更好的答案或确认上述内容是正确的。

相关问题