当前位置: 首页 > 面试题库 >

为什么不能删除猫鼬模型的对象属性?

汪深
2023-03-14
问题内容

当用户向我的API注册时,他们将返回一个用户对象。在返回对象之前,我删除了散列的密码和salt属性。我必须用

user.salt = undefined;
user.pass = undefined;

因为当我尝试

delete user.salt;
delete user.pass;

对象属性仍然存在并返回。

这是为什么?


问题答案:

要使用它,delete您需要通过调用将模型文档转换为普通的JavaScript对象,toObject以便您可以自由地操作它:

user = user.toObject();
delete user.salt;
delete user.pass;


 类似资料:
  • 问题内容: 我的意思不是删除一个或多个文件。我的意思是完全删除该模型,以便猫鼬不再意识到它。声明模型后,我不知道如何使猫鼬忘记该模型,以便可以重新创建它。 目前,上面引发了一个异常。 OverwriteModelError:编译后无法覆盖“ Book”模型。 我希望能够做这样的事情… …并且没有任何错误。有任何想法吗? 问题答案: 试试这个 然后重新注册/重新初始化它。它将正常工作

  • 我有以下在mongoDB CLI中工作的查询: 下面的问题,我认为是猫鼬的等价物: 使用mongoose调试,我可以看到mongoose转换为的以下查询正在删除数组中所有文档的整个pull操作的后半部分。为什么会这样?

  • 问题内容: 我有这个代码: 由于该应用程序支持其他类型的身份验证,因此我有一个用户模型,该模型具有嵌套的名为local的对象,看起来像 因此,在登录期间,我想检查用户是否提供了密码,但是遇到了这个有趣的问题。我的测试对象如下所示: 但是打印 我哪里做错了? 问题答案: 这是因为您从猫鼬回来的文档对象不会直接访问属性。它使用原型链,因此返回false(我在简化这一点)。 您可以执行以下两项操作之一:

  • 问题内容: 我在这里看到了很多关于这个问题的答案,但是我还是不明白(也许是因为他们使用了更多“复杂”的例子)……所以我试图做的是为“客户”建立一个模式将具有两个具有嵌套“子字段”的字段,其他字段可能重复。这是我的意思: 电话 和 电子邮件 可能是一个数组。和地址将不会重复,但是您会看到一些子字段。 我该如何工作? 问题答案:

  • 问题内容: 我和猫鼬在一起的行为很奇怪。当我得到结果对象时,我看到该属性在这里,但是当我尝试仅获得所需的值时,它返回未定义。 奇怪的是,如果我使用该方法,它将起作用。我肯定错过了什么。有人对此有解释吗? 问题答案: 当MongoDB文档中存在字段但未在Mongoose模式中定义字段时,就会发生这种情况。 因此,请确保在您的架构中将其定义为 或者,即使未在架构中定义它也要访问它,请使用以下方法:

  • 问题内容: 在阅读教程时,通常会在模式和模型之间进行区分,特别是在处理mongoose / mongodb时。由于在该系统下似乎不存在“模型”,因此移植到Postgresql会有些混乱。两种方法有什么区别? 例如,此行的postgres / sql ORM等价于什么? (猫鼬和express.js): 问题答案: 在猫鼬中,模式表示特定文档的结构,可以是完整文档,也可以是文档的一部分。这是表达期望