【问题标题】:Can sails populate assocations of more that one level deep?帆可以填充超过一层深度的关联吗?
【发布时间】:2014-09-05 00:48:14
【问题描述】:

我正在搞乱帆的 v0.10 版本,我遇到了一个令人费解的问题。我与我正在构建的应用程序有关系,这是一个简单的测验应用程序。问题出现在我的模型和关联的结构上:

测验 -> 问题 -> 答案

测验:

  attributes: {

    questions: {
        collection: 'Question',
        via: 'quiz'
    }

  }

问题:

  attributes: {

    answers: {
        collection: 'Answer',
        via: 'question'
    },
    quiz: { model: 'Quiz' }

  }

答案:

  attributes: {

    question: { model: 'Question' }

  } 

为了清楚起见,我省略了模型代码的其余部分。

现在的问题是,当我在 api/quiz 检索资源时,问题已填充但没有答案。我在某处读到,在风帆/水线中还没有嵌套的模型种群,真的是这样吗?

即使我去 api/question 然后我得到问题但没有答案,在这种情况下我不会认为答案是嵌套的。似乎无论我做什么,我都无法将答案填充到问题中,但它总是会在测验中填充问题。

【问题讨论】:

    标签: javascript node.js sails.js waterline


    【解决方案1】:

    确实可以。这是一个简单的方法。

    getPopulatedQuiz: function(quizId) {
      return Quiz.findOne(quizId)
      .populate('questions')
      .then(function(quiz) {
        return nestedPop(quiz, {
          questions: [
            'answers'
          ]
        }).then(function(quiz) {
          return quiz;
        });
      });
    }
    

    确保您需要nestedPop。

    var nestedPop = require('nested-pop');
    

    您可以在下面找到有关它的更多信息。

    https://www.npmjs.com/package/nested-pop

    【讨论】:

    • 如何使用你的 NPM 模块获取 5 个级别的关联数据?
    【解决方案2】:

    好吧,看来我使用的是sails 0.10.0 rc-7,一旦我升级到0.10.5,问题就消失了

    【讨论】:

      猜你喜欢
      • 2014-12-19
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 2017-02-22
      • 2021-12-13
      • 1970-01-01
      • 2017-06-10
      • 2015-10-12
      相关资源
      最近更新 更多