Typescript Sequelize模型加载器不检测模型方法
我正在尝试让sequelize与TypeScript一起工作,目前我有一个模型加载器,它可以按预期工作Typescript Sequelize模型加载器不检测模型方法,typescript,sequelize.js,typescript-typings,sequelize-typescript,Typescript,Sequelize.js,Typescript Typings,Sequelize Typescript,我正在尝试让sequelize与TypeScript一起工作,目前我有一个模型加载器,它可以按预期工作 import { Account, initAccount } from "./account"; import { initOrder, Order } from "./order"; import { initPrice, Price } from "./price"; import {Sequelize, Model} fro
import { Account, initAccount } from "./account";
import { initOrder, Order } from "./order";
import { initPrice, Price } from "./price";
import {Sequelize, Model} from 'sequelize';
const env = process.env.NODE_ENV || 'development';
const config = require(`${__dirname}/../../config/config.json`)[env];
interface db {
Order: Order;
Account: Account;
Candle: Candle;
}
const sequelize = new Sequelize(config.database, config.username, config.password, config);
initAccount(sequelize);
initOrder(sequelize);
initPrice(sequelize);
const db = {
sequelize,
Sequelize,
Account: Account,
Order: Order,
Price: Price,
}
export default db;
我通过执行import db from./models'
将其导入到另一个文件中,但是如果我开始键入db.Order.
我应该会得到所有可用的sequelize方法的列表,但我没有
我可以使用“/models/Price”中的import{Price}导入各个模型例如,code>,它可以正常工作。尽管这违背了使用单一型号装载机的目的
如何更改模型加载器以允许它显示我可以从单个函数运行的所有方法
下面是我的模型定义示例
import {
Sequelize,
Model,
DataTypes,
Optional,
} from "sequelize";
interface AccountAttributes {
id?: number;
accountId: string;
currency: string;
balance: number;
}
interface AccountCreationAttributes extends Optional<AccountAttributes, "id"> { }
export class Account extends Model<AccountAttributes, AccountCreationAttributes> implements AccountAttributes {
public id!: number;
public accountId!: string;
public currency!: string;
public balance!: number;
// timestamps!
public readonly createdAt!: Date;
public readonly updatedAt!: Date;
}
export function initAccount(sequelize: Sequelize): void {
Account.init({
accountId: DataTypes.INTEGER,
currency: DataTypes.STRING,
balance: DataTypes.INTEGER
}, {
tableName: 'accounts',
sequelize: sequelize,
});
}
显示模型定义。而且至少您应该将any
更改为所有模型的通用项,例如Sequelize@Anatoly我已经更新了我的帖子,展示了模型定义你是否尝试过接口db{[key:string]:model;}
,如果我尝试过,会产生一些其他问题,例如,类型“Model”在我的一个findAll
方法上没有调用签名,请参见。不幸的是,没有适用于所有注册模型的通用类型
let accountCurrencies: Array<number> = [];
const accounts = await db.Account.findAll({
limit: 50,
});
for (let i = 0; i < accounts .length; i++) {
accountCurrencies.push(accounts[i].currency);
}