$push во встроенном массиве Meteor collection2

В проекте Meteor, и я использую [пакет collection2], у меня есть следующая схема collection2:

  var schema =  new SimpleSchema ({
    comments: {
        type: [{text: String, createdAt: Date}],
        optional: true
     }})

И когда я использую этот запрос в методе Meteor:

Articles.update({_id: articleId}, {$push: {comments: {text: "yryd"}}})

Он вставляет пустой объект в массив комментариев ... ОК, в этом запросе нет проблем, потому что я запускаю его в терминале монго, и все кажется хорошим, и операция вставки выполнена. В чем проблема, по вашему мнению?


person omar.ite    schedule 29.08.2015    source источник
comment
Связано: Вытяните запись из массива через Meteor, что является еще одним вопросом с использованием SimpleSchema и Collection2. См. примеры в ответе, как это должно работать. Короче говоря, вы сделали что-то отличное от того, что сделано там, и это ваша проблема. На самом деле, в чем ваша проблема? Вы действительно не говорите, что не так. Кроме, конечно, createdAt не кажется здесь действительным. Я думаю, вы имели в виду другое поле с именем createdAt со значением по умолчанию.   -  person Blakes Seven    schedule 29.08.2015


Ответы (1)


Ваша схема в основном кажется неверной для того, что вы хотите здесь сделать. Скорее всего, это должно выглядеть примерно так:

Articles new Meteor.collection("articles");

CommentSchema = new SimpleSchema({
    "text": { type: String },
    "createdAt": { type: Date, defaultValue: Date.now }
});

Articles.attachSchema(
    new SimpleSchema({
        "comments": [CommentsSchema]
    })
);

Затем, когда вы добавляете новые вещи, ваши типы схемы проверяются на наличие поля «текст», а такие поля, как «createdAt», автоматически добавляются во вложенный документ в записи массива.

person Blakes Seven    schedule 29.08.2015