在Meteor中的测验应用程序中显示提示

时间:2016-01-20 00:49:56

标签: javascript arrays node.js meteor

在Meteor中,我有一个测验。

每个问题都有多个提示。

如果用户要求提供其他提示,我该如何发布一个提示?

我想我应该将提示存储为每个问题的数组,但我只想一次显示一个,所以不可能只显示整个数组。

如果提示数组包含对象,我不知道它是否最好

{ text: 'The hint text', isShownToUsers: ['userId1', 'userId2'] }

我担心isShownToUsers数组会变得非常大,每次向用户显示问题时我都必须订阅整个数组。

但也许它保存了向用户显示哪些提示也很好,所以如果他/她回到问题,用户会看到相同的提示?

1 个答案:

答案 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;
})