Рассчитанный пользователем атрибут в запросе MEAN.js MongoDB

Я создаю Restful API, используя Mean.js.

У меня есть модель статьи:

var ArticleSchema = new Schema({
    title: { ... },
    content: {...},
    ...
}

И модель пользователя, в которой есть массив статей, добавленных пользователем в закладки.

var UserSchema = new Schema({
    name: { ... },
    ...
    bookmarks: [{ type: Schema.ObjectId, ref: 'Article' }]
}

Я хочу прикрепить к объектам статей, извлеченным из БД, вычисляемый логический атрибут «В закладках», указывающий, добавил ли зарегистрированный пользователь статью в закладки.

Мне также придется повторить логику, чтобы показать, какие статьи пользователь уже читал, а какие для него новые, и, возможно, атрибут для оценки или лайка/дизлайка статьи. Все они связаны с одной и той же проблемой.

Как это сделать? Как лучше?

Я могу сделать это на уровне БД или экспресс-уровне. Я пытаюсь отправить пользователю поле, уже рассчитанное в JSON, которое он получит.

Я открыт для любых решений и готов изменить модель, отношения или логику, если это необходимо.


person Rodrigo Otávio    schedule 25.02.2015    source источник


Ответы (1)


Я предложу что-то вроде этого;

var ArticleSchema = new Schema({
    title: { ... },
    content: {...},
    ...
    bookmarkedBy : [{ type: Schema.ObjectId, ref: 'User' }]
    readBy : [{ type: Schema.ObjectId, ref: 'User' }]
    likedBy : [{ type: Schema.ObjectId, ref: 'User' }]
    dislikedBy : [{ type: Schema.ObjectId, ref: 'User' }]
}

var UserSchema = new Schema({
    name: { ... },
    ...
    bookmarks: [{ type: Schema.ObjectId, ref: 'Article' }]
    likes: [{ type: Schema.ObjectId, ref: 'Article' }]
    dilikes: [{ type: Schema.ObjectId, ref: 'Article' }]
    bookmarks: [{ type: Schema.ObjectId, ref: 'Article' }]
}
person Safi    schedule 25.02.2015