gpt4 book ai didi

javascript - Sequelize多对多关系同一张表

转载 作者:行者123 更新时间:2023-12-03 22:16:50 27 4
gpt4 key购买 nike

大家好,我有一个问题。假设我们有社交媒体。

enter image description here

让我们想象一下用户表看起来像这样。就像在任何其他社交媒体中一样,用户可以评论其他用户的照片。所以我们需要一个评论表,其中包含对发布图片的用户和评论图片的用户的引用。
enter image description here

所以我需要找到一种方法来制作 belongsToManysequelize .

enter image description here

到目前为止我有一个accounts.ts文件


import { AccountAttributes, Repository } from "@eneto/models";
import { DataTypes, Sequelize } from "sequelize";

/**
* Account factory
*
* @param {import("sequelize").Sequelize} sequelize Sequelize database instance.
* @returns {Repository<AccountAttributes>} Instance of Accounts Entity.
*/
function AccountFactory (sequelize: Sequelize): Repository<AccountAttributes> {
return sequelize.define("accounts", {
id: {
type: DataTypes.BIGINT,
allowNull: false,
unique: true,
primaryKey: true,
autoIncrement: true,
},
username: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
},
psswrd: {
type: DataTypes.STRING,
allowNull: false,
},
createdAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
updatedAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
},
}) as Repository<AccountAttributes>;
}

export { AccountFactory };

在我的 index.ts 上,我有这样的:

import { DB } from "@eneto/models";
import { Sequelize } from "sequelize";
import { env } from "../utils/env-vars";
import { AccountInfoFactory } from "./account-info";
import { AccountFactory } from "./accounts";

const sequelize = new Sequelize(env["ENETO_DB_NAME"], env["ENETO_DB_USER"], env["ENETO_DB_PASSWORD"], {
port: env["ENETO_DB_PORT"],
host: env["ENETO_DB_HOST"],
dialect: "postgres",
pool: {
min: 0,
max: 5,
acquire: 30000,
idle: 10000,
},
});

const Accounts = AccountFactory(sequelize);
const AccountTypes = AccountTypesFactory(sequelize);
const AccountAddress = AddressFactory(sequelize);
const SocialMedia = SocialMediaFactory(sequelize);
const Educations = EducationFactory(sequelize);

AccountTypes.hasMany(Accounts);
AccountAddress.hasMany(Accounts);
Accounts.hasMany(SocialMedia);
Accounts.hasMany(Educations);
Accounts.hasMany(Experiences);
Accounts.hasMany(AccountInfo);
Accounts.hasMany(Media);

// I still dont know how to make a
Accounts.belongsToMany(Accounts);

export const db: DB = {
Accounts,
sequelize,
};

最佳答案

找到答案:

Accounts.belongsToMany(Accounts,{ through: Comments,as: "to", foreignKey: "id" });
Accounts.belongsToMany(Accounts, { through: Comments, as: "from", foreignKey: "id" });

关于javascript - Sequelize多对多关系同一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61965582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com