如果它不包含具有指定映射的元素,我想追加到列表中。
让我们说数据库看起来像这样:
to_hex
仅当没有相同名称的活动时,我才想添加到活动列表中。目前,这是我得到的:
{
activities: [
{
name: {
fr: 'ex',
en: 'ex'
}
}, ...
]
}
这样,每次更新都会起作用,即使我在函数中发送的async create(appId, name) {
const newActivity = { id: uuid(), name };
const params = {
ConditionExpression: 'not contains (activities, :activityName)',
ExpressionAttributeValues: { ':activity': [newActivity], ':activityName': { name }, ':empty_list': [] },
Key: { id: appId },
TableName: this.tableName,
UpdateExpression: 'SET activities = list_append(if_not_exists(activities, :empty_list), :activity)',
};
return new Promise((resolve, reject) => {
this.client.update(params, (err) => {
if (err) {
reject(err);
} else {
resolve(newActivity);
}
});
});
}
如下,新的活动也会添加到列表中:
name
还有另一种方法吗?还是我做错了什么?这东西不会引发任何错误,它可以正常工作。