【问题标题】: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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 2013-06-06
      • 2013-11-06
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多