2016-07-13 2 views
0

У меня есть таблица в dynamodb так:Dynamodb сканирование с условием

TableName : "User", 
KeySchema: [  
    { AttributeName: "id", KeyType: "HASH"} //Partition key 
], 
AttributeDefinitions: [  
    { AttributeName: "id", AttributeType: "S" } 
], 
ProvisionedThroughput: {  
    ReadCapacityUnits: 10, 
    WriteCapacityUnits: 10 
} 

Сейчас я пытаюсь найти пользователя:

var params = { 
    TableName: 'User', 
    FilterExpression: 'contains(id, :value)', 
    ExpressionAttributeValues: { 
    ':value': 'ronaldo' 
    } 
}; 

dynamodb.scan(params, function(err, data) { 
    if (err) ppJson(err); // an error occurred 
    else ppJson(data); // successful response 
}); 

Это очень просто, но я получил много ошибок:

"message": "Expected params.ExpressionAttributeValues['value'] to be a structure" 

Любой получил это?

+0

Я получил это. Просто измените ': value': 'ronaldo' to ': value': {'S': 'ronaldo'} –

+0

иначе вы можете использовать documentclient в узле – Alessio

ответ

2

Вы можете попробовать этот код: У меня такая же проблема. Здесь значение структуры мы должны предоставить DataType, передавая значение It.

 var params = { 
      TableName: 'User', 
      FilterExpression: 'contains(id, :value)', 
      ExpressionAttributeValues: { 
       ':value': { 
        'S': 'ronaldo' 
       } 
      } 
     }; 

     dynamodb.scan(params, function(err, data) { 
      if (err) ppJson(err); // an error occurred 
      else ppJson(data); // successful response 
     }); 

Где S означает строка тип данных.

Смежные вопросы