- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
错误列表:
\Possibly unhandled Error: Cyclic dependency found. 'category' is dependent of itself. Dependency Chain: category -> shop => category
at visit (/home/rashmi/nodejs/node_modules/sequelize/node_modules/toposort-class/toposort.js:74:27)
at /home/rashmi/nodejs/node_modules/sequelize/node_modules/toposort-class/toposort.js:96:25
at Array.forEach (native)
at visit (/home/rashmi/nodejs/node_modules/sequelize/node_modules/toposort-class/toposort.js:95:20)
at /home/rashmi/nodejs/node_modules/sequelize/node_modules/toposort-class/toposort.js:96:25
at Array.forEach (native)
at visit (/home/rashmi/nodejs/node_modules/sequelize/node_modules/toposort-class/toposort.js:95:20)
at Toposort.self.sort (/home/rashmi/nodejs/node_modules/sequelize/node_modules/toposort-class/toposort.js:104:21)
at module.exports.ModelManager.forEachDAO (/home/rashmi/nodejs/node_modules/sequelize/lib/model-manager.js:88:21)
at /home/rashmi/nodejs/node_modules/sequelize/lib/sequelize.js:894:25
在运行这个文件 Model.js 时
var Category=sequelize.define("category",{
categoryname :{
type: Sequelize.STRING,
validate:{isAlpha:true}
}},
{
paranoid: true,
freezeTableName: true, //modeltable name will be the same as model name
comment: "I'm Category table!"
});
var shop=sequelize.define("shop",{
shopID:{
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
title: {
type: Sequelize.STRING(100),
allowNull: false,
validate:{isAlpha: true}
},
shopKeeperName:{
type: Sequelize.STRING(100),
allowNull: false,
validate:{isAlpha: true}
},
mobile :{
type: Sequelize.CHAR(10),
allowNull: false
},
city :{
type: Sequelize.INTEGER,
allowNull: false,
references: "City",
referencesKey: "cityId"
},
scategory :{
type: Sequelize.STRING,
allowNull: false,
references: "category",
referencesKey: "Id"
},
address :{
type: Sequelize.TEXT,
allowNull: false,
validate:{ isAlphanumeric:true}
},
stock :{
type: Sequelize.INTEGER,
validate: {isInt: true}
}
},
{
paranoid: true,
freezeTableName: true, //modeltable name will be the same as model name
underscored: true,
comment: "I'm Shop table!"
});
state.hasMany(city);
city.belongsTo(state,{foreignKey: 'stateID'});
Agent.hasOne(city);
city.belongsTo(Agent);
Agent.hasOne(state);
state.belongsTo(Agent);
shop.hasOne(Category);
Category.belongsTo(shop);
sequelize.sync();
在定义商店模型时,出现上述错误。 shop 中的外键 categoryid,我没有得到确切的原因,Shop 的意思是依赖于自身,依赖循环。
最佳答案
shop.hasOne(Category);
Category.belongsTo(shop);
从 category -> shop 创建关系,而 scategory
列从 shop -> category 创建关系。因为关系是双向的,所以 sequelize 不知道先创建哪个表 - 两个表都需要先创建另一个表。
您可能需要反转关系到:
shop.belongsTo(Category);
Category.hasOne(shop);
一个类别是否只与一家商店有关?否则,您需要 Category.hasMany(shop);
来使同一类别与多个商店相关。
此外,您不需要既添加列(分类)又调用关联函数——一个就足够了。这应该足够了:
shop.belongsTo(Category, { foreignKey: 'scategory' });
同时从商店的定义中删除 scategory
。要强制 scategory
不能为 null,您可以执行以下操作:
Shop.belongsTo(Category, {
foreignKey: {
allowNull: false,
name: 'scategory'
}
});
关于node.js - 依赖链 : category -> shop => category in model sequelizejs while defining foreign key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29249133/
我用 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', {
我是一名优秀的程序员,十分优秀!