最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

更新(添加)dynamodb与lambda函数

IT培训 admin 10浏览 0评论

更新(添加)dynamodb与lambda函数

我已经做了很多的研究和主题不具有像我这样的后辈足够的来源。所有我能找到的是特定的情况下这是使其无法理解。因此,对于我自己和谁就会在未来的阅读,我不会让我的问题太时的具体的人。

我创建了一个表记录上DynamoDB用下面的lambda函数:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2', apiVersion: '2012-08-10'})

exports.handler = (event, context, callback) => {
    console.log(event)

    const params = {
        Item: {
            "UserId": {
                S: "global" 
            },
            "search": {
                        SS: [
                             "" + event.hashtag
                            ]
            }
        },
        TableName: "crypto-app"
    };
    dynamodb.putItem(params, function(err, data) {
        if (err) {
            callback(err)
        } else {
            callback(null, data)
        }
    });
};

这是创建一个简单的字符串集

 {
  "search": {
    "SS": [
      "london"
    ]
  },
  "UserId": {
    "S": "global"
  }
}

我怎么可以添加多个字符串我的字符串lambda函数设置,使其像这样?

{
  "search": {
    "SS": [
      "london", "tokyo", "moskow" 
    ]
  },
  "UserId": {
    "S": "global"
  }
}
回答如下:

您可以更新的项目,并添加额外的字符串设定值。

这里是你会怎么做,如果你有一个名为xxx属性,而不是search,这是一个reserved word。

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2'});

const params = {
  Key: {
    UserId: {
      S: 'global',
    },
  },
  UpdateExpression: 'ADD xxx :avals',
  ExpressionAttributeValues: {
    ':avals': {
      SS: ['tokyo', 'moskow'],
    },
  },
  TableName: 'crypto-app',
};

dynamodb.updateItem(params, (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});

但是,因为你命名的属性search,这是保留的,你需要使用expression attribute name,这是你在表达式中使用,来替代实际的属性名称的占位符基本上逃脱保留名称。

下面是如何做到这一点的例子:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2'});

const params = {
  Key: {
    UserId: {
      S: 'global',
    },
  },
  UpdateExpression: 'ADD #a :avals',
  ExpressionAttributeValues: {
    ':avals': {
      SS: ['tokyo', 'moskow'],
    },
  },
  ExpressionAttributeNames: {
    '#a': 'search',
  },
  TableName: 'crypto-app',
};

dynamodb.updateItem(paramse, (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});

另外,可能会更好,这样做,这是使用DynamoDB DocumentClient。这是一个更高层次的客户端界面,它简化了通过抽象掉的属性值的概念,而不是使用本地JavaScript类型的项目工作。

随着DocumentClient,而不是明确地写UserId: { 'S': 'global' },你可以简单地使用UserId: 'global'和字符串类型('S')将被推断。

下面是使用DocumentClient项更新的例子:

const AWS = require('aws-sdk');
const dc = new AWS.DynamoDB.DocumentClient({region: 'us-east-2'});

const params = {
  Key: {
    UserId: 'global',
  },
  UpdateExpression: 'ADD #a :avals',
  ExpressionAttributeValues: {
    ':avals': dc.createSet(['tokyo', 'moskow']),
  },
  ExpressionAttributeNames: {
    '#a': 'search',
  },
  TableName: 'crypto-app',
};

dc.update(params, (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});

更新(添加)dynamodb与lambda函数

我已经做了很多的研究和主题不具有像我这样的后辈足够的来源。所有我能找到的是特定的情况下这是使其无法理解。因此,对于我自己和谁就会在未来的阅读,我不会让我的问题太时的具体的人。

我创建了一个表记录上DynamoDB用下面的lambda函数:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2', apiVersion: '2012-08-10'})

exports.handler = (event, context, callback) => {
    console.log(event)

    const params = {
        Item: {
            "UserId": {
                S: "global" 
            },
            "search": {
                        SS: [
                             "" + event.hashtag
                            ]
            }
        },
        TableName: "crypto-app"
    };
    dynamodb.putItem(params, function(err, data) {
        if (err) {
            callback(err)
        } else {
            callback(null, data)
        }
    });
};

这是创建一个简单的字符串集

 {
  "search": {
    "SS": [
      "london"
    ]
  },
  "UserId": {
    "S": "global"
  }
}

我怎么可以添加多个字符串我的字符串lambda函数设置,使其像这样?

{
  "search": {
    "SS": [
      "london", "tokyo", "moskow" 
    ]
  },
  "UserId": {
    "S": "global"
  }
}
回答如下:

您可以更新的项目,并添加额外的字符串设定值。

这里是你会怎么做,如果你有一个名为xxx属性,而不是search,这是一个reserved word。

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2'});

const params = {
  Key: {
    UserId: {
      S: 'global',
    },
  },
  UpdateExpression: 'ADD xxx :avals',
  ExpressionAttributeValues: {
    ':avals': {
      SS: ['tokyo', 'moskow'],
    },
  },
  TableName: 'crypto-app',
};

dynamodb.updateItem(params, (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});

但是,因为你命名的属性search,这是保留的,你需要使用expression attribute name,这是你在表达式中使用,来替代实际的属性名称的占位符基本上逃脱保留名称。

下面是如何做到这一点的例子:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2'});

const params = {
  Key: {
    UserId: {
      S: 'global',
    },
  },
  UpdateExpression: 'ADD #a :avals',
  ExpressionAttributeValues: {
    ':avals': {
      SS: ['tokyo', 'moskow'],
    },
  },
  ExpressionAttributeNames: {
    '#a': 'search',
  },
  TableName: 'crypto-app',
};

dynamodb.updateItem(paramse, (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});

另外,可能会更好,这样做,这是使用DynamoDB DocumentClient。这是一个更高层次的客户端界面,它简化了通过抽象掉的属性值的概念,而不是使用本地JavaScript类型的项目工作。

随着DocumentClient,而不是明确地写UserId: { 'S': 'global' },你可以简单地使用UserId: 'global'和字符串类型('S')将被推断。

下面是使用DocumentClient项更新的例子:

const AWS = require('aws-sdk');
const dc = new AWS.DynamoDB.DocumentClient({region: 'us-east-2'});

const params = {
  Key: {
    UserId: 'global',
  },
  UpdateExpression: 'ADD #a :avals',
  ExpressionAttributeValues: {
    ':avals': dc.createSet(['tokyo', 'moskow']),
  },
  ExpressionAttributeNames: {
    '#a': 'search',
  },
  TableName: 'crypto-app',
};

dc.update(params, (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});
发布评论

评论列表 (0)

  1. 暂无评论