【问题标题】:How do I access records in node.js using 'has-many belongs-to relationaship'?如何使用“拥有许多属于关系”访问 node.js 中的记录?
【发布时间】:2014-03-05 17:06:17
【问题描述】:

我是 node.js 的新手。我在我的应用程序中使用续集。 我有以下型号:

var Topic = sequelize.define('Topic', {
  topic_name: Sequelize.STRING,
  topic_category: Sequelize.STRING
},{tableName: 'Topics'})

var RawStatistic = sequelize.define('RawStatistic', {
  feedback_value: Sequelize.STRING,
  count: Sequelize.INTEGER,
  total_feedbacks_for_this_topic: Sequelize.INTEGER
},{tableName: 'RawStatistics'})

它们之间的关系如下:

RawStatistic.belongsTo(Topic);
Topic.hasMany(RawStatistic);

但是当我使用时:

    RawStatistic.all({limit: FIVE}).success(function (raw_statistics) {
    raw_statistics.getTopic().success(function (r){
    res.json(r)
    });
  });

我得到错误:

TypeError: Object [object Object] has no method 'getTopic'

我的问题是,如果我有反馈记录,如何访问特定主题名称? 相同的语法是什么?可能我忽略了一个明显的语法来实现这一点。任何帮助将非常感激。在此先感谢:)

【问题讨论】:

  • 你是如何定义你的Topics的?单数?还是复数?请注意,sequelize 中的 all 模型应以单数形式定义。此外,RawStatstics 属于 一个 主题,因此您不能使用 getTopics(),而使用 getTopic()(只有一个)。
  • @Zeta 你是对的,我定义了“主题”而不是“主题”。谢谢。我已经更正并更新了问题,但我仍然遇到同样的错误。不知道我错过了什么

标签: node.js express sequelize.js


【解决方案1】:

您正在尝试对实例集合使用实例方法。您需要遍历结果:

RawStatistic.all({limit: FIVE}).success(function (raw_statistics) {
  var i;
  for(i = 0; i < raw_statistics.length; ++i){
    raw_statistics[i].getTopic().success(function (t){
      /* ... */
    });
  }
});

【讨论】:

  • 天哪,我忽略了一些非常基本的东西。非常感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多