【问题标题】:Meteor, MongoDB and Manual ReferencesMeteor、MongoDB 和手册参考
【发布时间】:2014-02-26 10:15:31
【问题描述】:

我正在为我的 Meteor 项目构建一个问答系统。我有 3 个集合:一个名为“问题”,一个名为“答案”,另一个供管理员手动确定当天的问题, 名为“今天”。

所有收集的答案都将引用当天的问题。我想弄清楚的是如何为“Answers”集合制作一个插入声明。在这些字段中,它应该添加存储在“今天”中的问题的ObjectId。

Answers.insert({
  user: Meteor.userId(), 
  date: new Date(),
  answer: answer,
  questions_id: **here is where I would like the ObjectId of the current question**
})

如何引用和插入属于Today 集合中的字段(我们称之为字段QOD)的ObjectId 值?如果您有一个实际示例的答案,那就太好了。我没有那么有经验,以至于有人可以在不展示的情况下向我描述解决方案。谢谢。

当然,我还要弄清楚以后如何发布这些东西。但是当我到达那里时,我会穿过那条路。

【问题讨论】:

    标签: mongodb meteor normalization


    【解决方案1】:

    如果Answers 需要引用来自Questions 的记录,那么您需要获取该记录并将_id 字段包含在您将插入Answers 的对象中:

    var question = Questions.findOne({...criteria...});
    Answers.insert({
      user: Meteor.userId(),
      date: new Date(),
      answer: answer,
      questionId: question._id
    });
    

    希望这会有所帮助。我在您的问题中看到“条目”而不是“答案”,因此您可能想澄清一下。此外,您可能希望在 Questions 集合中拥有一个单独的字段,而不是单独的“Today”集合,以将某些问题标记为“今日问题”。

    【讨论】:

    • 谢谢。我不小心把“条目”留在那里。应该是答案。
    • 等等……我想我明白了。谢谢一百万。
    • 欢迎来到 StackOverflow!您可以编辑自己的问题并将Entries 更新为Answers。至于“标准”中的内容,这是一个 Mongo 选择器 - 参见meteor docs for find()。要检索单个值,请将fields 键传递给find,然后从findOne 返回的对象中获取所需的字段(在上面的示例中为_id)。 This post on Meteor collections 可能有助于了解更多关于集合的一般信息。
    • 哈,我想出了标准并试图快速编辑该问题,但我猜你很快就开始回答了。它完美地工作。我还不能对我的代表进行投票,但它肯定被接受了。
    • 看起来“questionId = question._id”应该是“questionId: question._id”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2012-04-24
    相关资源
    最近更新 更多