之前在项目 ( v4 ) 中使用过 Sequelize,但尝试使用 Sequelize v5 和 Typescript 开始一个新项目
我已经按照 Sequelize 的文档了解如何定义模型:https ://sequelize.org/master/manual/typescript.html#usage-of--code-sequelize-define--code-
我现在有一个可用的 ORM,但仅在导入实际模型以供使用时,而不是通过从模型加载器导入数据库。
IEimport { User } from "../db/models/user";
导入数据库,在尝试访问 db.User 时只返回undefined。
试图弄清楚如何让模型加载器与 Sequelize V5 和 Typescript 完美搭配,但目前它是空的。
现在,我可以说它正在搜索.js文件。所以显然它不会获取 user.ts 文件。将其更改为.ts然后给我错误....
at Sequelize.import (/node_modules/sequelize/lib/sequelize.js:486:38)
at fs_1.default.readdirSync.filter.forEach.file (/src/db/models/index.ts:26:35)
at Array.forEach (<anonymous>)
at Object.<anonymous> (/src/db/models/index.ts:25:4)
Run Code Online (Sandbox Code Playgroud)
我一直试图从网络搜索中获得明确的答案,但似乎是空洞的。试图让一切都玩得很好,这已经够头疼了……此时我正在将迁移/播种机作为 js 文件运行,因为我不想处理sequelize-typescript-cli或sequelize-typescript
src/db/models/user.ts
用户模型
import { Sequelize, Model, DataTypes, BuildOptions } from 'sequelize';
import { HasManyGetAssociationsMixin, HasManyAddAssociationMixin, …Run Code Online (Sandbox Code Playgroud) 我有模型一,乙,和Ç。
A具有与B&C的hasMany关联(并且B&C具有回到A的belongs关联)
我想返回A的记录,其中B.b_column ='b'或C.c_column ='c'。
我当前的方法是尝试使用required:在哪里的false,但这仅返回A及其关联的所有记录(如果它们存在)。我还尝试在关联上使用split:true,但它似乎仍带回了比我想要的更多的记录。
var results = await A.all({
include: [
{
model: B, as: "Bs",
where: { b_column: "b"},
separate: true
},
{
model: C, as: "Cs",
where: {c_column: "c"},
separate: true
},
]
});
Run Code Online (Sandbox Code Playgroud)