Javascript Mongoose find()返回未定义的属性和奇怪的对象

Javascript Mongoose find()返回未定义的属性和奇怪的对象,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我有一个无法解决的错误,因为它第一次发生在我身上 我的问题是: Pack.find( {idclient: clientId } ) .populate({ path: 'cards', options: { sort: { 'position': 1 } } }) . exec(function(err,pack){ if(er

我有一个无法解决的错误,因为它第一次发生在我身上

我的问题是:

    Pack.find(
            {idclient: clientId }
        )
        .populate({
            path: 'cards',
            options: { sort: { 'position': 1 } }
        })
        . exec(function(err,pack){
            if(err){
                console.log(err);
            }else{

                 ///
                // here are my logs

                callback(pack);
            }
        });
当我尝试console.log(pack)时,我可以看到一个奇怪的返回\n

{ __v: 1,\n  _id: 5596a859240cbd3832123b27,\n  grouped: 0,\n  idclient: \'4Z8OrisV2AMLZn_lAAAA\',\n  matId: 5596a859240cbd3832123b26,\n  reversed: 0,\n  roomId: 5596a859e37d7e7099cec1e6,\n  shuffled: 0,\n  type: \'hand\',\n  cards: [ 5596a859240cbd3832123b28, 5596a85c240cbd3832123b5d ],\n  date: Fri Jul 03 2015 17:20:57 GMT+0200 (CEST),\n  iscut: 0 }
通常,我可以看到一个格式良好的Json对象

因此,当我尝试:

console.log(pack.property)=>未定义

有人有过这个问题吗


谢谢这篇文章的两部分

首先,来自Mongoose find的回调返回一个数组。。。findOne将返回单个对象


就新行而言,mongoose文档有一个用于console.log的toString()助手。它可能会添加新行以提高可读性。在调用console.log之前,将输出包装在JSON.stringify(即console.log(JSON.stringify(pack)))中,您将看到一个没有换行符的字符串形式的文档-

这个有两个部分

首先,来自Mongoose find的回调返回一个数组。。。findOne将返回单个对象


就新行而言,mongoose文档有一个用于console.log的toString()助手。它可能会添加新行以提高可读性。在调用console.log之前,将输出包装在JSON.stringify(即console.log(JSON.stringify(pack)))中,您将看到一个没有换行符的字符串形式的文档-

这个有两个部分

首先,来自Mongoose find的回调返回一个数组。。。findOne将返回单个对象


就新行而言,mongoose文档有一个用于console.log的toString()助手。它可能会添加新行以提高可读性。在调用console.log之前,将输出包装在JSON.stringify(即console.log(JSON.stringify(pack)))中,您将看到一个没有换行符的字符串形式的文档-

这个有两个部分

首先,来自Mongoose find的回调返回一个数组。。。findOne将返回单个对象

就新行而言,mongoose文档有一个用于console.log的toString()助手。它可能会添加新行以提高可读性。在调用console.log之前,将输出包装在JSON.stringify(即console.log(JSON.stringify(pack)))中,您将看到一个没有换行符的字符串形式的文档-

find()返回一个数组,所以使用findOne(),这要感谢Adam Wysocki

有时我是个愚蠢的开发人员。

find()返回一个数组,所以使用findOne(),多亏了Adam Wysocki

有时我是个愚蠢的开发人员。

find()返回一个数组,所以使用findOne(),多亏了Adam Wysocki

有时我是个愚蠢的开发人员。

find()返回一个数组,所以使用findOne(),多亏了Adam Wysocki

有时我是一个愚蠢的开发人员。

正如我们所说的Model.find()会生成一个数组,所以下面是我处理这种情况的方法:

Kitten.find(function (err, kittens) {
    if (err) return console.error(err);
    kittens.forEach(function(kitten){
       console.log(kitten.name);
    }); 
});
在我看来,这似乎是访问属性的最清晰的方式,因为Model.find()生成了一个数组,所以我下面介绍了如何处理这种情况:

Kitten.find(function (err, kittens) {
    if (err) return console.error(err);
    kittens.forEach(function(kitten){
       console.log(kitten.name);
    }); 
});
在我看来,这似乎是访问属性的最清晰的方式,因为Model.find()生成了一个数组,所以我下面介绍了如何处理这种情况:

Kitten.find(function (err, kittens) {
    if (err) return console.error(err);
    kittens.forEach(function(kitten){
       console.log(kitten.name);
    }); 
});
在我看来,这似乎是访问属性的最清晰的方式,因为Model.find()生成了一个数组,所以我下面介绍了如何处理这种情况:

Kitten.find(function (err, kittens) {
    if (err) return console.error(err);
    kittens.forEach(function(kitten){
       console.log(kitten.name);
    }); 
});

在我看来,这似乎是访问属性的最清晰方式

来自Mongoose find的回调返回一个数组。。。您是否尝试过打包[0]。属性?来自Mongoose查找的回调将返回一个数组。。。您是否尝试过打包[0]。属性?来自Mongoose查找的回调将返回一个数组。。。您是否尝试过打包[0]。属性?来自Mongoose查找的回调将返回一个数组。。。您是否尝试过打包[0]。属性?不用担心,我们所有人都会遇到这种情况。我在下面编辑了我的答案,以涵盖问题的两个部分。不用担心,我们所有人都会遇到这种情况。我在下面编辑了我的答案,以涵盖问题的两个部分。不用担心,我们所有人都会遇到这种情况。我在下面编辑了我的答案,以涵盖问题的两个部分。不用担心,我们所有人都会遇到这种情况。我在下面编辑了我的答案,以涵盖问题的两个部分。