Node.js DynamoDB查询出错

Node.js DynamoDB查询出错,node.js,amazon-web-services,amazon-dynamodb,database,nosql,Node.js,Amazon Web Services,Amazon Dynamodb,Database,Nosql,我试图从DynamoDB查询字符串集项 错误: 代码: 我希望我的系统允许多个用户拥有相同的用户名——听起来很傻,这是有原因的 提前谢谢你 获取项目 需要:表名、键(至少是散列) 可选:属性获取、一致读取、表达式属性名称等 如果将ddb.query更改为ddb.getItem,则该代码应该可以正常工作 因此,您的getItem产品看起来像: var table = 'users' var params = { TableName : table, Key : {

我试图从DynamoDB查询字符串集项

错误: 代码: 我希望我的系统允许多个用户拥有相同的用户名——听起来很傻,这是有原因的

提前谢谢你

获取项目
  • 需要:表名、键(至少是散列)
  • 可选:属性获取、一致读取、表达式属性名称等
如果将
ddb.query
更改为
ddb.getItem
,则该代码应该可以正常工作

因此,您的getItem产品看起来像:

var table = 'users'
var params = {
    TableName : table,
    Key : {
        'userType': { S: event.type },
        'username': { S: event.username }
    }
}

ddb.getItem (params, function(err, data) {
    if (err) {
        // Oh well
    } else {
        context.succeed (data.Item)
    }
})
不过,您可能需要查询,这样您就可以返回多个项目

查询
  • 需要:表名,(KeyConditionExpression&&ExpressionAttributeValue)| | KeyConditions
  • 可选:返回ConsumedCapacity、QueryFilter、ProjectionExpression、Limit等
这将是:

var table = 'usatUsers'
var params = {
    TableName : table,
    KeyConditions: {
        "userType": {
            "AttributeValueList": [{
                S: event.type
            }],
            "ComparisonOperator" : "EQ"
        }
    }
}

ddb.query (params, function(err, data) {
    if (err) {
        // Oh well
    } else {
        context.succeed (data)
    }
})
此外,请注意保留密钥,以确保您的所有姓名都符合要求

var table = 'users'
var params = {
    TableName : table,
    Key : {
        'userType': { S: event.type },
        'username': { S: event.username }
    }
}

ddb.getItem (params, function(err, data) {
    if (err) {
        // Oh well
    } else {
        context.succeed (data.Item)
    }
})
var table = 'usatUsers'
var params = {
    TableName : table,
    KeyConditions: {
        "userType": {
            "AttributeValueList": [{
                S: event.type
            }],
            "ComparisonOperator" : "EQ"
        }
    }
}

ddb.query (params, function(err, data) {
    if (err) {
        // Oh well
    } else {
        context.succeed (data)
    }
})