【发布时间】:2021-11-12 01:14:56
【问题描述】:
我有一个将记录插入 DynamoDB 的 Node.js Lambda 函数。插入时,我使用new Date().getTime() 方法在名为createdAt 的字段下使用时间戳标记记录,如下所示:
const timestamp = new Date().getTime().toString();
然后在 lambda 内部:
const data = {
...JSON.parse(event.body),
purchased: false,
_id: uuid.v4(),
createdAt: timestamp,
updatedAt: timestamp,
};
在检索数据时,我正在执行扫描操作,然后使用 JS 数组排序方法手动对返回的记录数组进行排序,以将结果按createdAt 的降序排列(即最新记录应该出现在顶部):
//sort data in descending order of createdAt
data = data.sort((a, b) => {
let aDate = Number(a.createdAt);
let bDate = Number(b.createdAt);
return bDate - aDate;
});
现在,当我在 localhost 中进行测试时,这可以正常工作,但在 AWS Lambda 上执行代码时,我注意到一个奇怪的问题 - 彼此相隔几秒创建的多个记录具有相同的时间戳! 这个影响记录的排序并返回一个未排序的随机排序列表。谁能告诉我为什么会这样?
【问题讨论】:
-
只是为了确定 - 您在 lambda 函数内部而不是外部创建
timestamp值? -
外面。哦,我明白了!
标签: node.js aws-lambda amazon-dynamodb serverless