我正在為 Instagram 等社交媒體應用程式創建 restApi 端點。
有4張桌子
- 用戶
- 郵政
- 發帖點贊
- 后媒體
關聯... 一個用戶有很多帖子,一個帖子屬于一個用戶,一個帖子有很多帖子贊,一個帖子有很多帖子媒體,一個帖子贊屬于一個帖子,屬于一個用戶,一個帖子媒體屬于一個帖子,
如果您仍然有點不清楚,請發表評論,我們將不勝感激。
模型/用戶.js
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class User extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here??????????????
User.hasMany(models.Post, {
foreignKey: 'user_id',
as: 'posts',
onDelete: 'CASCADE',
});
User.hasMany(models.postLikes, {
foreignKey: 'user_id',
as: 'postLikes',
onDelete: 'CASCADE',
});
}
};
User.init({
profile_img: DataTypes.STRING,
firstname: DataTypes.STRING,
lastName: DataTypes.STRING,
email: DataTypes.STRING,
phone: DataTypes.STRING,
password: DataTypes.STRING,
dob: DataTypes.STRING,
gender: DataTypes.ENUM('male', 'female'),
token: DataTypes.STRING,
is_deleted: DataTypes.BOOLEAN,
}, {
sequelize,
modelName: 'User',
});
return User;
};
模型/post.js
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Post extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here????????????
Post.hasMany(models.postLikes, {
foreignKey: 'post_id',
as: 'postLikes',
onDelete: 'CASCADE',
});
Post.hasMany(models.postMendia, {
foreignKey: 'post_id',
as: 'postMedia',
onDelete: 'CASCADE',
})
}
};
Post.init({
description: DataTypes.STRING,
user_id: DataTypes.INTEGER,
is_deleted: DataTypes.BOOLEAN,
}, {
sequelize,
modelName: 'Post',
});
return Post;
};
模型/ postLikes.js
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class postLikes extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here??????????
postLikes.belongsTo(models.Post, {
foreignKey: 'post_id',
as: 'post',
});
postLikes.belongsTo(models.User, {
foreignKey: 'user_id',
as: 'user',
})
}
};
postLikes.init({
post_id: DataTypes.INTEGER,
user_id: DataTypes.INTEGER
}, {
sequelize,
modelName: 'postLikes',
});
return postLikes;
};
模型/postMedia.js
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class postMedia extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here??????????????
postMedia.belongsTo(models.Post, {
foreignKey: 'post_id',
as: 'post'
})
}
};
postMedia.init({
url: DataTypes.STRING,
post_id: DataTypes.INTEGER,
type: DataTypes.ENUM('image', 'video')
}, {
sequelize,
modelName: 'postMedia',
});
return postMedia;
};
在上述所有模型中創建關聯后,我正在運行命令
sequelize db:migrate
但是當我打開pgAdmin4控制臺時,我沒有看到任何外鍵。


PS 我指的是這篇文章 https://dev.to/nedsoft/getting-started-with-sequelize-and-postgres-emp
uj5u.com熱心網友回復:
在上面給出的博客中,家伙從未告訴我們必須添加
references: {
model: {
tableName: 'Users',
schema: 'public'
},
在遷移內部....
請參閱此頁面...只需在 Chrome 上搜索外鍵,您就會到達那里。 續集 DOCS
在這上面浪費了 4 個多小時
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/380089.html
標籤:节点.js 数据库 PostgreSQL的 表达 sequelize.js
上一篇:秘密圣誕老人排序問題
