导出 Dynamoose Typescript 模型
Exporting a Dynamoose Typescript model
- dynamoose 库提供了以下用于构建模型的签名:
model: {
<T extends Document>(name: string, schema?: SchemaDefinition | Schema, options?: Partial<import("./Model").ModelOptions>): T & Model<T> & ModelDocumentConstructor<T>;
defaults: any;
};
- TypeScript 文件中的消费如下:
import * as dynamoose from 'dynamoose';
...
const ExampleRepository = dynamoose.model(
schemaName,
ExampleSchema,
);
export default ExampleRepository;
- 编译产生错误:
Exported variable 'ExampleRepository' has or is using name 'ModelDocumentConstructor' from external module ".../node_modules/dynamoose/dist/index" but cannot be named.
关于 SO 的类似问题的其他答案建议应该导入 ModelDocumentConstructor
。
但是接口本身没有导出,所以不能导入。
由于 ModelDocumentConstructor
未导出,我已实施以下解决方案作为解决方法。创建第二个要导出的包装器对象,其中包含您需要的方法。
例如:
const Model = dynamoose.model('MyObj', Schema, {
create: false,
update: false,
});
async function add(obj: {}) {
try {
await Model.create(obj);
} catch (e) {
console.error(e);
}
}
async function findMany(obj: { [key: string]: any }) {
try {
return await Model.batchGet(obj);
} catch (e) {
console.error(e);
}
}
...
export const myObjDb = {
find,
findMany,
add,
remove,
update,
updateMany,
};
根据文档,它说 typescript 支持处于测试阶段,但 npm install --save "dynamoose@beta" 不起作用。
最新版本是否已经支持打字稿,或者非常有限。
如果在 tsconfig.json 文件中设置了 "declaration": true
选项,就会出现此问题。如果项目不需要它,将其禁用将解决问题。
我已经在 dynamoose 存储库中填写了错误报告,希望它会在下一个版本中得到修复。
- dynamoose 库提供了以下用于构建模型的签名:
model: {
<T extends Document>(name: string, schema?: SchemaDefinition | Schema, options?: Partial<import("./Model").ModelOptions>): T & Model<T> & ModelDocumentConstructor<T>;
defaults: any;
};
- TypeScript 文件中的消费如下:
import * as dynamoose from 'dynamoose';
...
const ExampleRepository = dynamoose.model(
schemaName,
ExampleSchema,
);
export default ExampleRepository;
- 编译产生错误:
Exported variable 'ExampleRepository' has or is using name 'ModelDocumentConstructor' from external module ".../node_modules/dynamoose/dist/index" but cannot be named.
关于 SO 的类似问题的其他答案建议应该导入 ModelDocumentConstructor
。
但是接口本身没有导出,所以不能导入。
由于 ModelDocumentConstructor
未导出,我已实施以下解决方案作为解决方法。创建第二个要导出的包装器对象,其中包含您需要的方法。
例如:
const Model = dynamoose.model('MyObj', Schema, {
create: false,
update: false,
});
async function add(obj: {}) {
try {
await Model.create(obj);
} catch (e) {
console.error(e);
}
}
async function findMany(obj: { [key: string]: any }) {
try {
return await Model.batchGet(obj);
} catch (e) {
console.error(e);
}
}
...
export const myObjDb = {
find,
findMany,
add,
remove,
update,
updateMany,
};
根据文档,它说 typescript 支持处于测试阶段,但 npm install --save "dynamoose@beta" 不起作用。
最新版本是否已经支持打字稿,或者非常有限。
如果在 tsconfig.json 文件中设置了 "declaration": true
选项,就会出现此问题。如果项目不需要它,将其禁用将解决问题。
我已经在 dynamoose 存储库中填写了错误报告,希望它会在下一个版本中得到修复。