在Meteor中,我有一个测验。
每个问题都有多个提示。
如果用户要求提供其他提示,我该如何发布一个提示?
我想我应该将提示存储为每个问题的数组,但我只想一次显示一个,所以不可能只显示整个数组。
如果提示数组包含对象,我不知道它是否最好
{ text: 'The hint text', isShownToUsers: ['userId1', 'userId2'] }
我担心isShownToUsers
数组会变得非常大,每次向用户显示问题时我都必须订阅整个数组。
但也许它保存了向用户显示哪些提示也很好,所以如果他/她回到问题,用户会看到相同的提示?
答案 0 :(得分:0)
这是一种方法。制作一个名为questions
的mongo集合,并在其中放置看起来像这样的文档
{
_id: 156276,
... question stuff...
hints: [
{id: '156276-1', 'text: 'black and white and red all over'}
]
}
users
mongo集合上的创建一个与所见提示相关的字段:
{... user stuff ..., seenHints: ['156276-1', '4983049-1']}
然后,当用户登陆页面时,您可以使用类似
之类的内容查找特定问题的看不见的提示var unseenHints = _.filter(question.hints, function(hint) {
return currentUser.seenHints.indexOf(hint) === -1;
})