簡體   English   中英

如何過濾 DynamoDB 的結果? (NodeJS / Lambda)

[英]How can I filter the result of DynamoDB? (NodeJS / Lambda)

我正在使用 NodeJS 和 DynamoDB 在 AWS Lambda 中制作 API 並嘗試獲取來自科羅拉多州(州 = 科羅拉多州)的特定客戶或客戶的詳細信息。

在這里,我試圖從科羅拉多州吸引所有客戶。

router.get("/customers", (req, res) => {
    const params = {
      TableName: 'Customer',
      FilterExpression: "stateOrProvince = :state",
      ExpressionAttributeValues: {
        ":state": "Colorado"
      }
    };
    dynamoDb.query(params, (error, result) => {
      if (error) {
        res.status(400).json({ error: `Error fetching the ${tableName}` });
      }
      res.json(result.Items);
    });
});

在這里,我試圖從特定客戶那里獲取詳細信息

router.get("/customers/:customerId", (req, res) => {
    const id = req.params.customerId
    const params = {
      TableName: 'Customer',
      FilterExpression: "customerId = :custId",
      ExpressionAttributeValues: {
        ":custId": id
      }
    };
    dynamoDb.query(params, (error, result) => {
      if (error) {
        res.status(400).json({ error: `Error fetching the ${tableName}` });
      }
      res.json(result.Items);
    });
});

這兩種情況我都在 postman 中遇到 502 錯誤:|

{“消息”:“內部服務器錯誤”}

你能幫我找出問題所在嗎? 我已經閱讀並嘗試了不同的語法,但我還不能讓它工作謝謝

如果不使用未定義的KeyConditionExpression ,則無法使用Query操作。 您至少必須為Query插入分區鍵。

試試下面,它使用 Scan 代替:

router.get("/customers", (req, res) => {
    const params = {
      TableName: 'Customer',
      FilterExpression: "stateOrProvince = :state",
      ExpressionAttributeValues: {
        ":state": "Colorado"
      }
    };
    dynamoDb.scan(params, (error, result) => {
      if (error) {
        res.status(400).json({ error: `Error fetching the ${tableName}` });
      }
      res.json(result.Items);
    });
});

或者對於特定客戶,設置 KeyConditionExpression:

router.get("/customers/:customerId", (req, res) => {
    const id = req.params.customerId
    const params = {
      TableName: 'Customer',
      KeyConditionExpression: "customerId = :custId",
      ExpressionAttributeValues: {
        ":custId": id
      }
    };
    dynamoDb.query(params, (error, result) => {
      if (error) {
        res.status(400).json({ error: `Error fetching the ${tableName}` });
      }
      res.json(result.Items);
    });
});

更多信息在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM