You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lambda中调用DynamoDB.scan()?遇TypeError问题求助

解决AWS Lambda中docClient.scan is not a function错误

问题出在你使用的是AWS SDK v3,它和旧版v2的API结构完全不同:

  • v3中DynamoDBClient本身不包含scan这类操作方法,所有数据库操作都需要通过单独的Command类来实现
  • v3推荐使用async/await替代回调函数,更符合现代JS写法

修正后的代码

import { DynamoDBClient, ScanCommand } from "@aws-sdk/client-dynamodb";

const docClient = new DynamoDBClient({});

export const handler = async function(event) {
  try {
    const scanningParameters = {
      TableName: "Vocabulary"
    };
    // 创建Scan命令并发送
    const response = await docClient.send(new ScanCommand(scanningParameters));
    // 返回扫描到的条目
    return response.Items;
  } catch (err) {
    // 捕获并返回错误
    return {
      errorType: err.name,
      errorMessage: err.message
    };
  }
};

关键修改点

  • 额外导入ScanCommand:这是v3中执行扫描操作的专用命令类
  • 使用docClient.send(new ScanCommand(params))替代原有的docClient.scan()
  • 利用async/await处理异步操作,替代回调函数,代码更易读且符合Lambda的异步handler规范
  • 移除了callback参数:Lambda的async handler可以直接返回结果或抛出错误,无需手动调用callback

内容的提问来源于stack exchange,提问作者LOTUSMS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:54:50