我正在将Javascript项目转换为类型记录。我在用Objection.js。问题是,类型记录无法找到Objection.js内置事务和查询函数的键入信息。我有以下类型的dev依赖项:
"@types/knex": "^0.16.1",
"@types/koa": "^2.13.4",
"@types/koa-bodyparser": "^4.3.7",
"@types/koa-json": "^2.0.20",
"@types/koa-logger": "^3.1.2",
"@types/koa-passport": "^4.0.3",
"@types/koa-router": "^7.4.4",
"@types/node": "^18.0.0",
"@types/node-os-utils": "^1.3.0",
"@types/statuses": "^2.0.0",这是我有问题的代码。在类型记录中找不到事务函数和查询函数。具体错误是ts(2339)“属性‘事务’在类型用户上不存在”以及“属性‘查询’在类型用户上不存在”。
async getOne(ctx): Promise<ResponseType> {
const userId = ctx.params.id;
if (!ctx.isAuthenticated() || !ctx.req.user.canActAs(userId)) {
return { status: status('Unauthorized') };
}
const idSchema = Joi.number().positive();
try {
// Error is on this line:
const returnValue = await User.transaction(async (trx) => {
await idSchema.validateAsync(userId);
// Error is on this line:
const user = await User.query(trx)
.where('id', userId)
.select(ctx.query.select ? ctx.query.select : null)
.first();
const returnedUser = ctx.req.user.isAdmin() ? user : user.filtered();
return { status: status('OK'), body: returnedUser };
});
return returnValue;
} catch (error) {
logger.error(error);
return {
status: status('Internal Server Error'),
message: 'Error',
};
}
}发布于 2022-07-06 23:08:37
我必须从以下位置更改用户导入:
import User = require('../../database/models/User');
至
import User from '../../database/models/User';
这解决了这个问题。
https://stackoverflow.com/questions/72886709
复制相似问题