【问题标题】:Waterline, error when trying to create one-to-many associationWaterline,尝试创建一对多关联时出错
【发布时间】:2014-08-13 03:26:52
【问题描述】:

我有这些模型:

// Material.js

module.exports = {
attributes: {

    name: {
        type: 'string',
        required: true
    },
    source_info: {
        type: 'string',
        required: true
    },
    category: { model: 'category_mat' }
}
};

和:

// Category_Mat.js

module.exports = {
attributes: {
    name: {
      type: 'string',
      required: true
    },
    material:{
        collection: 'material',
        via: 'category'
    }
},
};

但是当我运行应用程序时,我得到了这个错误:

/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/waterline-schema/lib/waterline-schema/foreignKeys.js:82
throw new Error('Trying to access a collection ' + collection + ' that is 
      ^

Error: Trying to access a collection category_mat that is not defined.

at ForeignKeys.findPrimaryKey (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/waterline-schema/lib/waterline-schema/foreignKeys.js:82:11)
at ForeignKeys.replaceKeys (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/waterline-schema/lib/waterline-schema/foreignKeys.js:53:27)
at new ForeignKeys (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/waterline-schema/lib/waterline-schema/foreignKeys.js:30:10)
at new module.exports (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/waterline-schema/lib/waterline-schema.js:30:17)
at Waterline.initialize (/usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline.js:106:17)
at buildORM (/usr/local/lib/node_modules/sails/lib/hooks/orm/build-orm.js:48:15)
at Array.async.auto.instantiatedCollections [as 1] (/usr/local/lib/node_modules/sails/lib/hooks/orm/index.js:191:11)
at listener (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:465:46)
at /usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:419:17
at Array.forEach (native)

我将此文档用作参考: http://sailsjs.org/#/documentation/concepts/ORM/Associations/OnetoMany.html

所以我不知道我错过了什么,或者我是否需要做一些配置......有什么帮助吗?

【问题讨论】:

  • 使用您上面发布的示例,这在本地运行良好。您使用的是哪个版本的 Sails?
  • 我使用的是 Sails 0.10.4
  • 我已经尝试过你的模型结构,它对我也很好。我认为可能是下划线是问题所在,但似乎并非如此。我也在运行 v0.10.4。您能否分享您的代码,以便我们尝试复制错误。
  • 我遇到了同样的错误,我的代码在github.com/djlovegrind/poker-application/tree/master/…,请随时查看!
  • @ZachCook 你没有任何收藏

标签: sails.js waterline


【解决方案1】:

可能是因为 Material.js 上使用的“category-mat”没有在任何地方定义...试试

// Category_Mat.js

module.exports = {
   identity: 'category_mat',
   attributes: {
      name: {
          type: 'string',
          required: true
      },
      material:{
          collection: 'material',
          via: 'category'
      }
    },
};

如果这样可行,唯一的副作用是即使您将 config/globals.js/models 设置为“true”,您也无法使用“Category_Mat”访问控制器中的模型。您要么必须使用“sails.models.category_mat”,要么只使用“category_mat”。

【讨论】:

    猜你喜欢
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2015-01-01
    相关资源
    最近更新 更多