รับการตอบสนองข้อผิดพลาด = null จากเกตเวย์ api และ dynamoDb

{ ข้อผิดพลาด: ไม่สามารถอ่านคุณสมบัติ 'playerId' เป็น null }

ฉันได้สร้างรายการฟังก์ชันแลมบ์ดาแล้ว

ที่ส่งผ่านใน playerId playerId นี้ถูกใช้เช่นนั้น

export const main = handler(async (event, context) => { 
const data = JSON.parse(event.body);
const params = {
  TableName: process.env.teamsTable,
  ExpressionAttributeValues : {
    ':playerId' : { S: data.playerId }
  },
  FilterExpression: "contains (players, :playerId)"
};
try {
  const result = await dynamoDb.scan(params);
  if (!result.Items) {
    throw new Error("Teams not found.");
  }

  return {
    status: 200,
    body: result.Items,
  };
} catch (e) {
return {
  statusCode: 500,
  body: JSON.stringify({ error: e.message }),
};}});

ฉันได้ทดสอบมันในเครื่องด้วยการจำลองแบบไร้เซิร์ฟเวอร์และใช้งานได้ สร้างการเรียกเพื่อใช้ใน FE และกดปุ่มข้อผิดพลาดนี้: {error: Cannot read property 'playerId' of null} error: ไม่สามารถอ่านคุณสมบัติ 'playerId' of null ได้ และยังกดผ่านเกตเวย์ API และกดเหมือนเดิม การโทรส่วนหน้า -

  const endpoint = "/teams";
  console.log(playerId);
  try {
    const response = await API.get(amplifyAPIName, endpoint, {
      body: playerId
    });
    return response;
  } catch {
    return [];
  }
}

ช่วย


person Fenton Haslam    schedule 11.03.2021    source แหล่งที่มา
comment
เกตเวย์ api ถูกกำหนดด้วย Lambda หรือ Lambda_Proxy หรือไม่ เราสามารถตรวจสอบ/เปลี่ยนแปลงการตั้งค่านี้ได้ ที่นี่ สำหรับโค้ดของคุณ คุณต้องมี Lambda_Proxy   -  person Balu Vyamajala    schedule 11.03.2021
comment
เป็นเพราะการวางเนื้อหาไว้ในวิธี GET หรือไม่?   -  person Zem    schedule 12.03.2021
comment
ใช่! อ๋อ ขอบคุณนะ!   -  person Fenton Haslam    schedule 12.03.2021
comment
โชคดีนะ โชคดี!   -  person Zem    schedule 12.03.2021


คำตอบ (1)


คำตอบ: ฉันใช้วิธีการรับแทนการโพสต์ ฉันกำลังส่ง playerId เป็นนิพจน์ตัวกรองใน aws เมื่อเปลี่ยนเป็นโพสต์ฉันก็สามารถรับผลลัพธ์ได้

person Fenton Haslam    schedule 12.03.2021