2 回答

TA貢獻1993條經驗 獲得超6個贊
DynamoDB 中的操作Query
根據主鍵值查找項目。GSI
您可以查詢具有復合主鍵(分區鍵和排序鍵)的任何表或二級索引 ( )。
現在對于你的問題,你有兩個選擇:
選項 1
設為
FARMERID
您的 GSI
選項2
使用
Scan
方法并過濾結果
現在您需要根據您的需求進行成本評估。每種方法都有其自身的優點和缺點。
根據評論,一種方法可能是
var data =?
[
? ? {
? blocknumber: '20',
? BusinessData: {
? ? BASE_UNIT: 'kg',
? ? FARMERID: 'FAINKABR0001',
? ? FARMLOCATION: 'Farm 3927',
? ? GAPINFO: {},
? ? PLANTINGDATE: '2020-11-02T18:30:00.000Z',
? ? PRODUCEQUANTITES: [
? ? ? {
? ? ? ? name: 'Priya',
? ? ? ? qty: 200
? ? ? }
? ? ],
? ? SELECTED_UNIT: {
? ? ? NAME: 'kg'
? ? }
? },
? chaincodeID: 'producechaincode',
? docType: 'Produce',
? PRID: 'PRFAINKABR0007',
? PRODUCE: 'Sweetcorn',
? STATUS: 'Approved',
? timestamp: '2020-12-06T13:03:08.857Z'
},
{
? blocknumber: '20',
? BusinessData: {
? ? BASE_UNIT: 'kg',
? ? FARMERID: 'FAINKABR0002',
? ? FARMLOCATION: 'Farm 3927',
? ? GAPINFO: {},
? ? PLANTINGDATE: '2020-11-02T18:30:00.000Z',
? ? PRODUCEQUANTITES: [
? ? ? {
? ? ? ? name: 'Priya',
? ? ? ? qty: 200
? ? ? }
? ? ],
? ? SELECTED_UNIT: {
? ? ? NAME: 'kg'
? ? }
? },
? chaincodeID: 'producechaincode',
? docType: 'Produce',
? PRID: 'PRFAINKABR0007',
? PRODUCE: 'Sweetcorn',
? STATUS: 'Approved',
? timestamp: '2020-12-06T13:03:08.857Z'
},
{
? blocknumber: '20',
? BusinessData: {
? ? BASE_UNIT: 'kg',
? ? FARMERID: 'FAINKABR0001',
? ? FARMLOCATION: 'Farm 3927',
? ? GAPINFO: {},
? ? PLANTINGDATE: '2020-11-02T18:30:00.000Z',
? ? PRODUCEQUANTITES: [
? ? ? {
? ? ? ? name: 'Priya',
? ? ? ? qty: 200
? ? ? }
? ? ],
? ? SELECTED_UNIT: {
? ? ? NAME: 'kg'
? ? }
? },
? chaincodeID: 'producechaincode',
? docType: 'Produce',
? PRID: 'PRFAINKABR0007',
? PRODUCE: 'Sweetcorn',
? STATUS: 'Approved',
? timestamp: '2020-12-06T13:03:08.857Z'
}
];
function filterResponse(data, id) {
? for(var i = 0; i < data.length; i++) {
? ? if(data[i].BusinessData.FARMERID === id ) {
? ? ? console.log(data[i]);
? ? }
? }
}
filterResponse(data, "FAINKABR0001");

TA貢獻1895條經驗 獲得超7個贊
我還添加了我的整個代碼,將來有人會遇到同樣的問題,這里 FilterExpression 為 FilterExpression: "BusinessData.FARMERID = :farmeridvalue"
在這里,我們需要給 FilterExpression 值提供我們想要查詢的屬性,即BusinessData.FARMERID并給出一個名稱,正如我farmeridvalue現在給出的那樣,您已將ExpressionAttributeValues我設置為搜索值,如下所示FAINKABR0001
完整掃描碼如下
var params = {
TableName: "Your_tableName",
FilterExpression: "BusinessData.FARMERID = :farmeridvalue",
ExpressionAttributeValues: {
":farmeridvalue" :"FAINKABR0001"
}
};
docClient.scan(params, onScan);
function onScan(err, data) {
if (err) {
console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
} else {
// print all the movies
console.log("Scan succeeded.", data);
data.Items.forEach(function(Block) {
console.log( "result",
Block.docType + ": ",
Block.timestamp, "- rating:", Block.BusinessData.FARMERID);
});
// continue scanning if we have more movies, because
// scan can retrieve a maximum of 1MB of data
if (typeof data.LastEvaluatedKey != "undefined") {
console.log("Scanning for more...");
params.ExclusiveStartKey = data.LastEvaluatedKey;
docClient.scan(params, onScan);
}
}
}
添加回答
舉報