【问题标题】:How to get schema attributes names from model in dynamoose v3?如何从 dynamoose v3 中的模型获取模式属性名称?
【发布时间】:2023-02-02 16:27:38
【问题描述】:
在发电机 v2 中:
T extends Document;
model: ModelType<T>;
const attributes: string[] = model.schemas[0].attributes();
通过这种方式,我得到了模式的属性名称。
如何从 dynamoose v3 中的模型获取属性名称?
在发电机 v3 中:
T extends Item;
model: ModelType<T>;
const attributes: string[] = model.schemas[0].attributes();
我有以下错误:Property 'schemas' does not exist on type 'ModelType<T>'。
【问题讨论】:
标签:
javascript
typescript
amazon-dynamodb
dynamoose
【解决方案1】:
我在使用 Dynamoose 3 时遇到了类似的问题。这是一个如何获取模型属性的工作示例:
import * as dynamoose from "dynamoose";
import {Item} from "dynamoose/dist/Item";
// Strongly typed model
class Person extends Item {
id: number;
name: string;
}
const PersonModel = dynamoose.model<Person>("Person", {"id": Number, "name": String});
如果您尝试使用未声明的字段创建新记录,例如 surname,Typescript 将对您大喊大叫。
CatModel.create({"id": 1, "surname": "string"});
创建或获取模型后,您的 IDE 将正确地为您提供属性。
示例 1:
const Person = await PersonModel.get(1);
//console.log(Person.id)
//console.log(Person.name)
示例 2:
const Person = await PersonModel.create({id: "1", name: "John" })
//console.log(Person.id)
//console.log(Person.name)