запрос mongodb возвращает [объект объект]

Я использую mongo с NODEJS, но при попытке получить данные из db всегда есть объект, который он возвращает [object Object] вместо объекта; Вот моя схема

IngredientSchema = new MongoDb.Schema(
    {
        "name": String  //名称
        ,"optional":Boolean
        ,"substitution": String
        ,"preparation": String
        , "amount": Number
        , "units": String   //单位
    }
);

directionSchema = new MongoDb.Schema(
    {
        "image": String     //图片
        ,"tip": String
        , "content": String //正文
        , "duration": Number    //定时 无定时则设置为null
        , "audiopath": String
    }
);

infoSchema =  {
    "title": String //菜谱名称
    ,"lang": String
    ,"author":String
    ,"image_url": String
    ,"serves": Number
    ,"source": String
    ,"time":Number
};

categorySchema = {
    "region": String
    ,"type": String
    ,"tags": String
};

CookBookSchema= new MongoDb.Schema(
    {
        "info": infoSchema
        , "categories": categorySchema
        , "ingredients": [IngredientSchema] //材料
        , "directions": [directionSchema]       //步骤
        ,'nutrition':String
    }
    , {strict: false}
);
CookBook= MongoDb.model(COOKBOOK_TABLE, CookBookSchema);

он возвращает такое значение

[
    {
        "categories": "[object Object]",
        ....
    }
]

Другой объект в результате работает нормально. Я искал в гугле, но не нашел ответа

В mongodb данные "категорий" такие

categories" : { "type" : "cake", "tags" : "Cake, Caramel Sauce, Chocolate Cake, Chocolate Cake, Chocolate Desserts, Christmas, Christmas Cake, Christmas Desserts, Christmas Party, Coconuts, Desserts, Fruit, German Chocolate Cake, Healthy Cooking, Ice Cream Toppings, Low Sodium, More Fruits, More Holidays, Sauces and Toppings, Valentine's Day" }

Но отсутствует объект _id, который будет иметь другие объекты.

я написал в mongodb, используя приведенные ниже коды

```

cookBookModule.create(data, function(err, object) {
            if (err) {
                console.error(err);
                console.log(data);
                return res.status(HTTPCODE.DB_ERR).json('save failed');
            }

            res.status(HTTPCODE.CREATED).json(object);
            TtsModule.audio_process(object);
        })

```

Что-то не так?


person Kevin wang    schedule 22.09.2014    source источник
comment
используйте метод JSON.stringify(), чтобы узнать, что содержит ваш [object object].   -  person Ravi    schedule 22.09.2014
comment
да. Я напечатал его с помощью JSON.stringify(). Дело не в этом. Он просто возвращает строку, а не объект   -  person Kevin wang    schedule 22.09.2014
comment
Используйте утилиту Package для просмотра объекта.   -  person Subburaj    schedule 22.09.2014
comment
Как? никогда не использовал утилиту   -  person Kevin wang    schedule 22.09.2014
comment
Я не использую Mongoose, но разве это не должно быть categorySchema = new MongoDb.Schema({...})?   -  person yaoxing    schedule 22.09.2014
comment
нет, я уверен в этом, потому что схема может использовать только ссылку или массив, категория не является массивом, поэтому она должна быть ссылкой.   -  person Kevin wang    schedule 22.09.2014


Ответы (1)


"categories": "[object Object]"

Это означает, что когда вы сохранили объект, вы фактически сохранили его toString() представление. Поскольку его не было, вы получили [object Object] по умолчанию.

Ваша проблема не в чтении из базы данных, а в записи, проверьте, как ваши категории сериализуются в монго.

person fmsf    schedule 22.09.2014
comment
вы правы, но когда я заглянул в Mongodb, то категория это объект, Но странно, что обычно у объектов в Mongo будет объект _id, а у этого его нет. а также я использую Module.create(data, function(err, object){...}); Есть ли что-нибудь, требующее внимания? - person Kevin wang; 22.09.2014
comment
что внутри данных? это то, на что вы должны смотреть. Категории не выводят _id, потому что они находятся внутри вашей поваренной книги, поэтому поваренная книга будет иметь идентификатор. - person fmsf; 22.09.2014