- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遇到了一个问题,我试图关联两个具有一对多关系的模型。由于某种原因,尽管引用了关系,此查询仍会引发错误。
这是我的错误消息:
Unhandled rejection TypeError: Cannot read property 'getTableName' of undefined
at generateJoinQueries (/Users/user/Desktop/Projects/node/project/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1181:43)
这是路线:
appRoutes.route('/settings')
.get(function(req, res, organization){
models.DiscoverySource.findAll({
where: {
organizationId: req.user.organizationId
},
include: [{
model: models.Organization, through: { attributes: ['organizationName', 'admin', 'discoverySource']}
}]
}).then(function(organization, discoverySource){
res.render('pages/app/settings.hbs',{
organization: organization,
discoverySource: discoverySource
});
})
});
发现来源:
module.exports = function(sequelize, DataTypes) {
var DiscoverySource = sequelize.define('discovery_source', {
discoverySourceId: {
type: DataTypes.INTEGER,
field: 'discovery_source_id',
autoIncrement: true,
primaryKey: true
},
discoverySource: {
type: DataTypes.STRING,
field: 'discovery_source_name'
},
organizationId: {
type: DataTypes.TEXT,
field: 'organization_id'
},
},{
freezeTableName: true,
classMethods: {
associate: function(db) {
DiscoverySource.belongsTo(db.Organization, {foreignKey: 'organization_id'});
},
},
});
return DiscoverySource;
}
组织:
module.exports = function(sequelize, DataTypes) {
var Organization = sequelize.define('organization', {
organizationId: {
type: DataTypes.INTEGER,
field: 'organization_id',
autoIncrement: true,
primaryKey: true
},
organizationName: {
type: DataTypes.STRING,
field: 'organization_name'
},
admin: DataTypes.STRING
},{
freezeTableName: true,
classMethods: {
associate: function(db) {
Organization.hasMany(db.DiscoverySource, {foreignKey: 'organization_id'});
},
}
});
return Organization;
}
最佳答案
看来,这是 Sequelize Association Error Cannot read property 'getTableName' of undefined 的重复项.
但是,您需要重写查询,如下所示:
models.DiscoverySource.findAll({
attributes: ['discoverySource'],
where: {
organizationId: req.user.organizationId
},
include: [{
model: models.Organization,
attributes: ['organizationName', 'admin']
}]
})
根据 Sequelize 文档:
[options.attributes] - A list of the attributes that you want to select, or an object with include and exclude keys.
[options.include[].attributes] - A list of attributes to select from the child model.
[options.include[].through.where] - Filter on the join model for belongsToMany relations.
[options.include[].through.attributes] - A list of attributes to select from the join model for belongsToMany relations.
因此,[options.include[].through]
只能在 Belongs-To-Many
关联的情况下使用,而不是在您为 DiscoverySource
和 Organization
模型使用的 Belong-To
情况下使用。
关于node.js - SequelizeJS 无法读取未定义的属性 'getTableName',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121767/
我用 node script.js 运行这个 sequelize 代码 const Sequelize = require('./node_modules/sequelize') const sequ
我有以下代码。这个想法是我每隔一段时间更新一个数据库行,但是如果我在此脚本运行时手动从数据库中删除该行,save() 仍然进入成功(),但该行实际上并未放回数据库. (因为 sequelize 使用
我遇到了一个异常,在任何地方都找不到解决方案。看起来像是 sequelizeJs 的 bug。 这是问题: 我有两个模型 module.exports = db.sequelize.define('u
我试图弄清楚如何将数组作为实例属性的值传递。目前,我在模型中将 dataType 设置为 STRING,并将 jQuery 字段中的值插入每个表单字段值到我从正文中解析并设置为属性的数组中,发现源。不
我正在使用 NodeJS 和 Sequelize。我有以下问题: 阅读设置表: Settings.findOne({where: { user_id: data }})
我正在使用 sequelizejs。我的数据库是 Mssql。将数据写入表时出现问题。这是我得到的错误: Unhandled rejection SequelizeDatabaseError: Con
我的模型: module.exports = function(sequelize, DataTypes){ var Podcast = sequelize.define('Podcast', {
我有一些“邀请”模型: 'use strict'; export default function (sequelize, DataTypes) { return sequelize.define
我想做一些事情,比如我在 Mongoose 中可以做的事情: Customers.find({ $or: [ {firstName: {$in:
我正在尝试诊断我的 Express 应用程序运行缓慢的原因,该应用程序使用 SequlizeJS 作为 ORM。我有一个模型与其他 2 个模型具有 2x hasMany 和 hasOne 关系: 更新
我不知道软删除是如何与 SequelizeJS 一起工作的,我也找不到任何在线文档。 我已经在 deletedAt 列中设置为 deletedAt: { type: Sequelize.DAT
如果我有一个模型用户: var User = sequelize.define('User', { name: { type: Sequelize.STRING, allowNul
是否可以在不依赖迁移的情况下使用 sequelizejs sequelize.sync() 来索引表? 如果不是,是否有任何可能的方法通过 sequelize 以编程方式进行迁移,看来文档 here
如果用户有许多项目,反之亦然,我可以使用 user.getProjects() 获取所有用户项目 - 但是有什么方法可以搜索这种关系,以便您可以翻阅结果并进行过滤(例如按项目名称)? 谢谢。 http
我想根据关联模型的参数更改模型中的值... 我不知道如何在我的预约模型中获取客户的性别... var Appointment = db.define('Appointment', { titl
所以现在我一直在使用 SequelizeJS 作为我的数据访问层,我现在最大的担忧是它试图找到一种自定义 Sequelize 模型调用的方法。 例如,假设对于 model.find() 方法,我想将缓
我正在使用 Sequelizejs 并尝试创建简单的用户验证功能 function ValidateIsUserLogged(sessionKeyInput) { var result =
我对 NodeJS 和 SequelizeJS 比较陌生,并且我正在构建的查询面临 hasOne 问题,我想知道您对此问题的看法,以找出我出错的地方以及实现此查询的正确方法。 Association
我在我的 Sequelize 应用程序中使用 PostgreSQL 和 node.js。我有两个具有一对一关系的表 - Customers 和 Users 。 UserId 表中有外键 Custome
我在 SequelizeJS 中使用关系遇到问题。 我的错误消息:(500:内部服务器错误)用户与文章无关! 文章型号: var Article = db.define('article', {
我是一名优秀的程序员,十分优秀!