【发布时间】:2020-09-09 22:01:16
【问题描述】:
大家好,我有一个问题。假设我们有社交媒体。
让我们想象一下 users 表是这样的。就像在任何其他社交媒体中一样,用户可以评论其他用户的照片。所以我们需要一个 cmets 表,其中包含对发布图片的用户和 cmets 图片的用户的引用。
所以我需要找到一种方法在sequelize 中创建belongsToMany。
到目前为止,我有一个 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,
};
【问题讨论】:
标签: javascript node.js postgresql typescript sequelize.js