#json #mongoose
#json #mongoose
Вопрос:
У меня есть следующая структура данных, выводимая из моей схемы в приложении node / express. Я бы хотел, чтобы массив каналов представлял собой просто массив пар имя: ключ. Мне не нравится странная структура пронумерованных объектов, происходящая между «каналами» и фактическими данными каналов. Но я не могу понять, как вручную определить это в mongoose. любая помощь была бы потрясающей. Спасибо!
выведенный JSON
{
"title": "Testing",
"created_at": "2011-10-05T16:23:26.217Z",
"feeds": [{
"0": {
"name": "twitter",
"key": "person1"
},
"1": {
"name": "twitter",
"key": "person2"
},
"_id": "4e8c847e02edc10035000003"
}]
}
я хочу это:
{
"title": "Testing",
"created_at": "2011-10-05T16:23:26.217Z",
"feeds": [
{
"name": "twitter",
"key": "person1"
},
{
"name": "twitter",
"key": "person2"
}
],
"_id": "4e8c847e02edc10035000003"
}
это моя схема:
var Feed = new Schema({
name : { type: String }
, key : { type: String }
});
var Page = new Schema({
title : { type: String, required: true, index: { unique: true } }
, feeds : [Feed]
, created_at : { type: Date, required: true, default: Date.now }
});
Ответ №1:
Хорошо, коллега смог ответить на это за меня. Я виноват в том, что не опубликовал соответствующий код, я не понял, в чем проблема на самом деле. Но для тех, кто может столкнуться с этой проблемой:
Если вы вставляете свои встроенные документы в модель при сохранении, вам может потребоваться выполнить цикл forEach вместо того, чтобы объединять встроенные документы (в данном случае каналы). Используя forEach, база данных сохраняла каналы непосредственно в массив каналов, а не создавала эти странные группировки.
Это правильно подтолкнуло каналы:
req.body.feed.forEach(function(feed){
page.feeds.push(feed);
});
Дайте мне знать, если у вас такая же проблема и вам нужно больше объяснений.