Я использую mongoose, и у меня есть две модели: Item и Hashtag.
Модель Hashtag должна содержать только имя, а модель элемента должна содержать список хэштегов (представленных идентификаторами).
Это то, что я сделал:отношение mongoose между моделями
var ItemSchema = new Schema({
hashtags: [ { type: Schema.ObjectId, 'default': null, ref: 'Hashtag' } ],
});
var HashtagSchema = new Schema({
name: { type: String, 'default': '', trim: true },
items: [{ type: Schema.ObjectId, ref: 'Page' }]
});
Это, как я пытаюсь создать пункт:
var item = new Item({
hashtags: ['a', 'b', 'c']
});
item.save(function (err, item) {
if (err) return res.json({ error: err });
res.json(item);
});
К сожалению, я получаю эту ошибку:
CastError: Cast to ObjectId failed for value "a,b,c" at path "hashtags"
Как я могу решить это?
Есть ли способ привязать хэштеги как-то к модели? Какое-то ограничение? – Naor
Да, вы можете использовать [поддокументы] (http://mongoosejs.com/docs/subdocs.html), если хэштеги могут принадлежать исключительно одному элементу. –
Позже я хочу показать все хэштеги. Есть ли способ добавить что-то вроде «до создания», которое создает хэштеги при необходимости и конвертирует имена в идентификаторы? – Naor