node.js - get 的响应数据类型

标签 node.js typescript amazon-dynamodb

我正在将 NodeJS 项目从 javascript 迁移到 typescript。 所以,我正在尝试添加类型。

我剩下的唯一问题是 dynamodb 查询的类型问题。

  static async hasUser(user: string): Promise<boolean> {
    const params = {
      TableName: "users",
      Key: { user }
    };

    const data = await new Promise((resolve, reject) => {
      docClient.get(params, (err, data) => {
        if (err) {
          reject(err);
        } else {
          resolve(data);
        }
      });
    }).catch((_err) => false);

    if (!data) return false;
    const user = data.Item;            <<----- problem is here.
    return user != null;    
  }

当 AWS dynamodb 执行 get(...) 时,返回值实际上总是有一个 Item 属性。但是,我不知道在这里应该使用哪种类型来描述它。

我已经有了 aws-sdk 依赖项。 (根据我的阅读,@types/aws-sdk 依赖项不再是必要的,因为这些类型应该包含在 aws-sdk 依赖项中。

最佳答案

考虑像这样重写:

try {
  const data: DocumentClient.GetItemOutput = await promisify((cb) => (docClient.get(params, cb)))()
  return data && data.Item != null;
} catch( err ) {
  return false;
}

不能 100% 确定类型 GetItemOutput 是否正确。 但目前看来是匹配的。

关于node.js - get 的响应数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847185/

相关文章:

node.js - 如何在 Express 中重复使用带 Handlebars 的布局?

javascript - 如何立即执行 mongoose 查询并使用 Promise.all 等待它们?

javascript - 如何将字符串或类传递给方法来创建实例

java - dynamoDB 表上的 UpdateTableSpec 不起作用

java - 仅从 dynamodb 表中检索项目值?

javascript - 无法在 Nodejs Express 中将类作为函数调用

javascript - 快速应用程序位于 Electron 应用程序内部的网址是什么

javascript - Typescript 外部模块,如何保持正确的类型提示?

angular - InjectionToken 产生 "Error encountered resolving symbol values statically"

javascript - 从浏览器使用 DynamoDB 的最简单方法是什么?