MEAN.js MongoDB查询中用户特定的计算属性

时间:2015-02-25 18:43:08

标签: javascript mongodb express mongoose meanjs

我正在使用Mean.js构建Restful API。

我有一个文章模型:

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

用户模型,其中包含用户为其添加书签的文章数组。

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

我想附加到从DB中检索到的文章对象计算出的布尔值“已添加书签”,表示登录用户是否已为该文章添加了书签。

我还必须重复逻辑以显示用户已经阅读过的文章,以及哪些文章对他来说是新的,并且可能是评价或喜欢/不喜欢文章的属性。所有这些都涉及同样的问题。

我该怎么做?最好的方式是什么?

我可以在DB级别或Express级别执行此操作。我试图向用户发送已经在他收到的JSON中计算过的字段。

我对任何解决方案持开放态度,并愿意在必要时改变模型,关系或逻辑。

1 个答案:

答案 0 :(得分:0)

我会建议这样的事情;

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' }]
}