typescript - Sequelize Model Loader 未检测到模型方法
问题描述
我正在尝试让 sequelize 与 TypeScript 一起工作,我目前有这个按预期工作的模型加载器
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 方法的列表,但我没有。
我可以使用import {Price} from './models/price';
例如导入单个模型,并且可以正常工作。尽管这违背了使用单个模型加载器的目的。
如何更改我的模型加载器以允许它显示我可以从单个函数运行的所有方法?
下面是我的模型定义的一个例子
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,
});
}
更新
所以现在检测到不同的模型方法,但是如果我尝试访问模型的属性,我会收到此错误Property 'currency' does not exist on type 'Model<any, any>'.
我用来尝试访问该currency
属性的代码如下
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);
}
解决方案
推荐阅读
- javascript - 页面重新加载并且不显示路线“/places/new”和“/places/:id”的任何内容,其次返回值未定义或空
- python - AttributeError:模块'tensorflow.python.framework.op_def_registry'没有属性'register_op_list
- amazon-web-services - AWS CodeDeploy - “在不期望的地方找到列表的开始”
- css - 如何使用 CSS 将列表中的项目组织成列?
- android - 什么是 aar anatomy 中的 api.jar
- xml - 我应该使用什么 XML 从 VMware SDK 获取网络使用信息
- wpf - WPF Combobox SelectionChanged 事件未触发
- android - OpenCV - BackgroundSubtractorMOG2 中的 Apply 方法在 5-10 秒后使 Android 应用程序崩溃
- java - 如何根据 ID Spring Boot 从文件中打印原始 json 对象
- python - 如何在 numpy 数组中设置阈值?