【问题标题】:How can I set Boolean property to true or false in MongoDB with nodejs如何使用nodejs在MongoDB中将布尔属性设置为true或false
【发布时间】:2021-07-20 12:48:28
【问题描述】:

我是后端开发的新手。我正在使用带有 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),其中提到 “布尔属性上不允许使用值“true”和“false”。为了表示 false 值,该属性具有完全省略。”..所以我尝试了复选框方法

<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 值吗?

【问题讨论】:

  • 输入类型复选框的checked 属性为您提供布尔值。你不需要value
  • 我没有在其中添加值.. <input type="checkbox" checked> .. 这只是我声明的属性.. 但是在 mongoose/nodejs 中,stringValue 似乎是“on”,如错误..我只想有一个truefalse ..我不知道如何实现

标签: javascript node.js mongodb express mongoose


【解决方案1】:

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

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

databaseObject.name = request.body.name

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

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

对我有用的是这个..

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

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

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

如果有其他方法可以做到这一点,我会欢迎更多的答案,因为这是我想出来的,因为没有回应我的问题。因此,欢迎提供更好的答案或确认上述内容是否正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多