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

使用Lambda与NodeJS从DynamoDB获取数据后无法访问JSON属性

问题排查与解决

核心问题

你在Lambda handler里调用异步函数pullone时没有使用await关键字,导致data变量实际是一个Promise对象,而非DynamoDB返回的JSON数据,因此无法直接通过.school或.sessionid访问属性。

修正后的代码

//Function to pull data from Dynamo DB (works)
async function pullone(sessionid) {
  const params = {
    TableName: dynamodbTableName,
    Key: {
      'sessionid': sessionid
    }
  };
  try {
    const response = await dynamodb.get(params).promise();
    return response.Item;
  } catch (error) {
    console.error('Do your custom error handling here. I am just gonna log it: ', error);
  }
}

//executing it
exports.handler = async (event) => {
  let sessionid = "45883754"
  // 关键:添加await等待异步函数执行完成
  let data = await pullone(sessionid)
  // 现在可以正常访问属性
  console.log(data.school, data.sessionid);
  return data
};

补充说明

  1. 异步函数(async标记)的返回值默认是一个Promise,必须通过await或.then()来获取实际的resolved值。
  2. 原代码中pullone里同时使用了await和.then(),可以简化为try/catch写法,逻辑更清晰。
  3. 加上await后,data会被赋值为DynamoDB返回的response.Item,此时就能正常访问.school和.sessionid属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:30:52