Ошибка обновления SimpleSchema

Я пытаюсь создать избранную кнопку, сохранив идентификатор пользователя в учетной записи пользователя, вошедшего в систему. Идея заключается в том, что если есть userId (пользователь является избранным), в противном случае пользователь не является избранным. Проблема в том, что я получаю сообщение об ошибке update failed: Error: Favorites must be an array, и я не знаю, что это значит.

Путь: schema.js

Schema.UserProfile = new SimpleSchema({
    "favorites.$.favorite": {
        type: Object
    }
});

Путь: studentlist.js

Template.student.events({
'click .favourite':function(event,template) {
      console.log('click');
        var candidateId = this._id;

        Meteor.users.update({_id: Meteor.userId() }, { $set: { "profile.favorites": candidateId }});
    }
});

person bp123    schedule 07.03.2016    source источник
comment
См. Должны ли вопросы включать «теги» в свои заголовки? , где консенсуса нет, не должны!   -  person    schedule 07.03.2016
comment
Нет проблем, Андреас, я приму это к сведению. Все еще учусь правильно делать вещи.   -  person bp123    schedule 07.03.2016
comment
Вы прикрепили схему к коллекции с помощью aldeed:collection2? Почему вы пытаетесь установить favorites в идентификатор, который обычно является строкой, когда вы указали, что это должен быть массив с favorites.$? Пожалуйста, отредактируйте свой вопрос, указав минимально воспроизводимый пример.   -  person Kyll    schedule 07.03.2016


Ответы (1)


У вас по сути две ошибки.

на момент ошибки вы должны были определить свойство Favorites как массив. и в коде, который вы пытаетесь обновить с помощью команды $set.

когда вы вставляете элемент в массив в MongoDB, вы должны использовать оператор $push.

и второй проблемой, с которой вы столкнетесь после исправления этой проблемы, будет неправильная вставка типа данных. потому что вы определили favorite как объект, но пытаетесь вставить простой идентификатор.

person Faysal Ahmed    schedule 07.03.2016