首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >‘`mongoose`’是如何处理添加包含模式中__NOT__部分的字段的文档的?

‘`mongoose`’是如何处理添加包含模式中__NOT__部分的字段的文档的?
EN

Stack Overflow用户
提问于 2013-05-12 16:55:04
回答 2查看 5.8K关注 0票数 24

我在玩猫鼬的快速入门指南。

http://mongoosejs.com/docs/index.html

我假设当我使用架构中未定义的字段保存文档时,它会引发错误。相反,它在集合中创建了一个新文档,但没有该字段。(注意:我意识到mongodb本身是“无模式的”,因此集合中的每个文档可以完全不同。)

两个问题

  1. mongoose如何处理添加包含而不是架构的部分的字段的文档?看起来它只是忽略了它们,如果没有字段映射,就会使用ObjectId创建一个空文档。
  2. 如果文档的特定字段未被添加,即使文档成功保存,如何让mongoose警告您呢?

(问题是--我相信--很简单,所以我没有添加代码,但如果有人请求,我肯定会添加代码。)

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-13 00:14:17

Q:猫鼬如何处理添加不属于模式的字段的文档?

严格选项(默认情况下启用)确保传递给我们的模型构造函数的值(在我们的架构中没有指定)不会保存到db。- 猫鼬博士

问:即使文档成功保存,如果没有添加文档的特定字段,如何让猫鼬警告您?

严格的选项也可以设置为“抛出”,这将导致产生错误,而不是删除坏数据。- 猫鼬博士

...but如果您绝对需要保存模式中没有的键,那么您必须自己来处理。我能想到的两种方法是:

1.要保存不在架构中的键,可以在具体更新上将strict设置为false。然后,您需要编写一些验证:(a)文档中的值符合您的标准;(b)保存在数据库中的文档与您发送的文档相匹配。

2. --您可以看到混合模式类型是否可以满足您的需要,而不是禁用strict附带的验证。(向下滚动到该链接上的“使用说明”,因为“混合”文档的链接似乎暂时中断了。)

票数 27
EN

Stack Overflow用户

发布于 2013-05-13 00:13:29

Mongoose允许您添加执行有用功能的“验证器”和“预”中间件。例如,可以在架构中指定required属性,以指示必须设置特定属性。您还可以指定一个validator,如果关联的属性不符合您的规范,就可以手工处理它来抛出一个错误。您还可以设置一个Mongoose "pre" validator,如果它找到超出架构的字段,它将检查文档并抛出一个错误。通过让中间件调用next() (或不调用),您可以控制是否继续保存文档(或不保存文档)。

堆栈溢出上的这个问题/答复可以帮助找出对象是否有属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16509828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档