如何阻止mongoose / javascript向数组添加空值?

时间:2017-10-18 13:09:17

标签: javascript mongodb mongoose

我有一个mongoose架构,其字段为comments: [String]

当我尝试更新架构时,我通过将以下代码添加到控制器来检查值是null还是空,

if (req.body.comments !== null || req.body.comments !== '') { container.comments.push(req.body.comments) }

container.save() ...

但是,当我运行此代码(使用邮递员进行测试)并且没有为注释字段提供值时,它会在数据库中将数据更新为null。

comments: [String]位于主模式定义中,而不是成功文档或类似内容的一部分。

有人知道解决这个问题的方法或为什么会这样?

2 个答案:

答案 0 :(得分:2)

确保评论不是undefined,您可以通过这种方式处理所有案例:

if (req.body.comments && req.body.comments !== '') {
  container.comments.push(req.body.comments)
}

这样就不会添加空字符串,null和未定义的值,假设req.body.comments总是以字符串形式出现。

答案 1 :(得分:0)

在到达条件声明之前,您需要将<!-- list.component.html --> <tbody> <tr *ngFor='let lst of iproducts.Registers'> ... </tr> <tr *ngIf='!iproducts.Registers'> <td colspan="3">No List Data Found</td> </tr> </tbody> 设置为空数组

container.comments

这样,保存在数据库中的数据将始终是一个数组,无论您是否根据请求发送评论。

还值得一提的是,在monggose上保存一个空数组将导致container.comments = container.comments || [] if (req.body.comments && req.body.comments !== '') { container.comments.push(req.body.comments) } ,除非你覆盖它。

编辑示例以考虑数组是否为空