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

不可能从猫鼬对象获得财产

康弘义
2023-03-14
问题内容

我和猫鼬在一起的行为很奇怪。当我console.log得到结果对象时,我看到该属性在这里,但是当我尝试仅获得所需的值时,console.log(obj.propt)它返回未定义。

ServerModel.findOne(function (err, server) {
    if (err) {
        return console.error(err);
    }

    console.log(server);
    // output:
    // {_id: 55ead0eb4105b7df958256af,
    // name: 'st1',
    // ip: '57.29.42.241',
    // capacity: 0,
    // totalUsed: 0,
    // state: true }

    console.log(server.ip);
    // output: undefined

    console.log(server.name);
    // output: st1

    // but that works if I use the toObject method
    var srvr = server.toObject();

    var serverAddress = srvr.ip;
    // serverAddress is 57.29.42.241
});

奇怪的是,如果我使用该.toObject方法,它将起作用。我肯定错过了什么。有人对此有解释吗?


问题答案:

当MongoDB文档中存在字段但未在Mongoose模式中定义字段时,就会发生这种情况。

因此,请确保在您的ServerModel架构中将其定义为

ip: String

或者,即使未在架构中定义它也要访问它,请使用以下get方法:

console.log(server.get('ip'));


 类似资料:
  • 问题内容: 当用户向我的API注册时,他们将返回一个用户对象。在返回对象之前,我删除了散列的密码和salt属性。我必须用 因为当我尝试 对象属性仍然存在并返回。 这是为什么? 问题答案: 要使用它,您需要通过调用将模型文档转换为普通的JavaScript对象,以便您可以自由地操作它:

  • 问题内容: 我正在尝试使用猫鼬返回dbs集合的列表。我遵循此处列出的指示,但http://grokbase.com/t/gg/mongoose- orm/122xxxr7qy/mongoose-get-a-list-of-all- collections 。所以这是我的代码 唯一的问题是名称返回的是未定义的。因此,甚至可以仅使用香草猫鼬返回收藏列表吗? 问题答案: 连接后尝试运行您的集合名称功能。

  • 问题内容: 我不确定如何填充下面的示例架构,甚至可能。引用可以在如下所示的对象内吗?如果可以,您将如何填充?例如? 还是我必须有两个单独的数组来定位和计数,如下所示: 我觉得第一个解决方案是最好的,但是我不确定如何在Mongoose中使用它。 非常感谢您的帮助! 问题答案: 第一种解决方案是可能的。 猫鼬目前有限制(在这里看到这张票)填充嵌入文档的多层次,不过 是 在一个文档中了解嵌套的路径非常好

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

  • 问题内容: 有没有一种方法可以更新对象中的值? 假设我要为id = 2的项更新名称和值项; 我尝试了以下w /猫鼬: 这种方法的问题在于它会更新/设置整个对象,因此在这种情况下,我会丢失id字段。 猫鼬中是否有更好的方法来设置数组中的某些值,但不理会其他值? 我也只查询了这个人: 问题答案: 你近了 您应该在使用update运算符时使用点符号来做到这一点:

  • 是否有方法更新对象中的值? 假设我想更新id=2的项目的名称和值项目; 我尝试过以下猫鼬: 这种方法的问题在于它更新/设置了整个对象,因此在本例中,我丢失了id字段。 在mongoose中有没有更好的方法来设置数组中的某些值,而不设置其他值? 我也问过只是人: