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

Posted

技术标签:

【中文标题】在 Meteor 的测验应用程序中显示提示【英文标题】:Show hints in quiz app in Meteor 【发布时间】:2016-04-25 16:25:16 【问题描述】:

在 Meteor 中,我有一个测验。

每个问题都有多个提示。

当用户要求另一个提示时,我如何才能一次释放一个提示?

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

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

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

恐怕isShownToUsers 数组会变得很大,每次向用户显示问题时,我都必须订阅整个数组。

但也许保存向用户显示哪些提示也很好,这样用户在他/她回到问题时会看到相同的提示?

【问题讨论】:

我没有使用过流星,但这是一个想法。我猜每个用户都通过网络套接字连接到测验(根据我在流星上读到的内容,它是一个基于套接字的平台,对吧?)。如果是这种情况,您可以在连接的用户套接字hasHintAtIndex: 0 上设置一个属性,当他们第一次请求属性递增的提示并返回服务器上提示数组中该索引处的提示时。这样,您就不必为测验中的每个问题存储大量 isShownToUsers。每当用户提出新问题时,hasHintAtIndex 属性将重新索引为 0。 【参考方案1】:

这是一种方法。制作一个名为 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;
)

【讨论】:

但是我如何分辨哪些提示属于哪些问题呢?我不应该将提示作为数组添加到每个问题中吗? 但是我可以确保 MongoDB 自动为每个提示创建唯一的 ID 吗? 您可以使用某种模式创建自己的模式。您也可以使用new Mongo.ObjectID() 为您生成一个。但是除非您将 hints 设为单独的集合,否则不会自动生成 ID,您也可以这样做。然后给每个提示一个question: $question._id 属性

以上是关于在 Meteor 的测验应用程序中显示提示的主要内容,如果未能解决你的问题,请参考以下文章

外部图像未在 Android 应用程序中显示 - Meteor - Cordova

JQuery 测验应用程序 - 突出显示无序列表条目和调用函数

多项选择的测验应用程序

如何构建 Meteor 智能包

我应该在路由逻辑或 Meteor 模板助手中提供数据吗?

在 Meteor 中验证用户密码