我和猫鼬在一起的行为很奇怪。当我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中有没有更好的方法来设置数组中的某些值,而不设置其他值? 我也问过只是人: