Sequelize hasMany工作正常,但反比关系不正常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sequelize hasMany工作正常,但反比关系不正常相关的知识,希望对你有一定的参考价值。
我试图在Node Js(express Js)中使用Sequelize来处理mysql关系。
User.hasMany(Post);
工作就好了,但当我试图反转它在Post模型一样。Post.belongsTo(User);
得到了这个错误。 throw new Error(${source.name}.${_.lowerFirst(Type.name)}调用的东西不是Sequelize.Model的子类)。
错误:post. belongsTo被调用的东西不是Sequelize.Model的子类。
用户模式喜欢。
const Sequelize = require('sequelize');
const db = require('../config/db');
const Post = require('./Post');
const User = db.define('user', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
notNull: true,
primaryKey: true
},
name: {
type: Sequelize.STRING,
notNull: true
},
email: {
type: Sequelize.STRING,
notNull: true
},
password: {
type: Sequelize.STRING,
notNull: true
}
});
User.hasMany(Post);
module.exports = User;
和帖子模式一样。
const Sequelize = require('sequelize');
const db = require('../config/db');
const User = require('./User');
const Post = db.define('post', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
notNull: true,
primaryKey: true
},
title: {
type: Sequelize.STRING,
notNull: true
},
description: {
type: Sequelize.TEXT,
notNull: true
},
author: {
type: Sequelize.STRING,
notNull: true
}
});
Post.belongsTo(User);
module.exports = Post;
如何解决这个问题? 谢谢大家...
答案
你应该纠正你的模型定义,导出为函数,并定义了 联想 在每个模型定义函数中,像这样的函数,当所有的模型都注册到某个模块(如数据库.js)后,再全部调用它。
user. js
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
notNull: true,
primaryKey: true
},
...
User.associate = function (models) {
User.hasMany(models.Post)
}
post.js
module.exports = (sequelize, DataTypes) => {
const Post = sequelize.define('post', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
notNull: true,
primaryKey: true
},
...
Post.associate = function (models) {
Post.belongsTo(models.User)
}
以上是关于Sequelize hasMany工作正常,但反比关系不正常的主要内容,如果未能解决你的问题,请参考以下文章
Sequelize.hasMany/belongsTo中的foreignKey是啥意思?
sequelize/sequelize-typescript - 带有 HasMany 的 findAll 返回一个对象而不是数组