下面是node.js对象上AWS中的dynamoDB查询。UserID是没有排序键的主键。GeoHash是一个辅助键,具有索引名"GeoHash- index“。调用成功,没有错误,但不会返回任何内容。下面的测试数据可能是错误的,因为它没有提供到索引名称的任何连接,但是我对AWS/noSQL并不熟悉,而且有点丢失。
var AWS = require('aws-sdk');
var docClient = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = function(event,context,callback) {
console.log(JSON.stringify(event, null, ' '));
var tableName = "table1";
// getItem
docClient.getItem({
TableName: tableName,
IndexName: "GeoHash-index",
KeyConditionExpression: "GeoHash = :geohash",
ExpressionAttributeValues: {":geohash": "dpz886gb0tb0"}
}),
function(err,data){
if(err){
callback(err);
} else {
callback(null,data);
}
}
};其中的lambda测试数据是
{
"GeoHash": "dpz886gb0tb0",
"Radius": 2,
"Timestamp": 1472601493180,
"UserID": "User1"
}GeoHash字符串应该相互匹配。有什么想法?
编辑使用此方法也没有成功
var AWS = require('aws-sdk');
var docClient = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = function index(event, context, callback) {
var params = {
TableName: "LocationAware1",
IndexName: "GeoHash-index",
KeyConditionExpression: "GeoHash = :geohash",
ExpressionAttributeValues: {
":geohash": {'S': 'dpz886gb0tb0'}
},
};
docClient.query(params, function(err, data) {
if (err)
console.log(JSON.stringify(err));
else
console.log(JSON.stringify(data));
});
}发布于 2016-08-31 03:00:33
var AWS = require('aws-sdk');
exports.handler = function(event,context,callback) {
var params = {
TableName: 'Table1',
IndexName: 'GeoHash-index',
KeyConditionExpression: 'GeoHash = :geohash',
ExpressionAttributeValues: {
':geohash': 'dpz886g8p9e2',
}
};
var docClient = new AWS.DynamoDB.DocumentClient();
docClient.query(params, function(err, data) {
if (err) callback(err);
else callback(null, data);
});
}重写了它就干净了。
发布于 2016-08-31 01:16:13
当您说调用成功而没有错误时,我假设您是指对lambda的调用。
如果您使用的是节点4.3版本,则不推荐从函数返回的方式,如aws文档中的摘录所示
Node.js运行时v4.3支持可选的回调参数。您>可以使用它显式地将信息返回给调用方。一般的语法是: 回调(错误,对象结果);使用回调参数是可选的。如果不使用可选的回调参数,则行为与调用没有任何参数的回调()相同。可以在代码中指定回调以将信息返回给调用方。如果代码中不使用回调,AWS将隐式调用它,返回值为null。 如果使用节点4.3,这是从aws lambda函数返回的正确方法。
首先向处理程序函数添加第三个参数,如下所示
exports.handler = function(event,context,callback)然后,当从函数返回时,请遵循以下形式
function(err,data){
if(err){
callback(err);
} else {
callback(null,data);
}
}https://stackoverflow.com/questions/39239035
复制相似问题