![](/img/trans.png)
[英]NodeJS AWS Lambda, DynamoDB not writing result and not logging
[英]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.