Я хочу добавить в свой список, если он не содержит элемент с указанной картой.
Допустим, база данных выглядит следующим образом:
{
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
, которую я отправляю, выглядит так:
{
fr: 'ex',
en: 'ex'
}
Есть ли другой способ сделать это или я делаю что-то не так? Эта вещь не выдает никакой ошибки, она просто работает.