Javascript 删除dynamodb中的列表元素,索引是存储在变量中的值

Javascript 删除dynamodb中的列表元素,索引是存储在变量中的值,javascript,list,aws-lambda,amazon-dynamodb,Javascript,List,Aws Lambda,Amazon Dynamodb,我正在尝试从列表中删除一项。当我硬编码项的索引(即REMOVE relatedUsers[0]),但在变量中找到了索引时,更新表达式就会工作。因此,我尝试使用ExpressionAttributeValue替换更新表达式中的变量,但得到的错误是“无效的UpdateExpression:Syntax error;标记:\“:userIndex\”,靠近:\“[:userIndex]\”' 这是我的密码 函数更新器(数据){ console.log('-----------updateUser--

我正在尝试从列表中删除一项。当我硬编码项的索引(即REMOVE relatedUsers[0]),但在变量中找到了索引时,更新表达式就会工作。因此,我尝试使用ExpressionAttributeValue替换更新表达式中的变量,但得到的错误是“无效的UpdateExpression:Syntax error;标记:\“:userIndex\”,靠近:\“[:userIndex]\”'

这是我的密码

函数更新器(数据){
console.log('-----------updateUser------);
控制台日志(数据);
常量参数={
TableName:process.env.USER_表,
关键:{
id:data.id,
},
表达式属性值:{
“:updatedAt”:时间戳,
“:notificationCount”:1,
“:userIndex”:data.index,
},
UpdateExpression:'ADD notificationCount:notificationCount REMOVE relatedUsers[:userIndex]SET updatedAt=:updatedAt',
ReturnValues:“全新”,
};
返回新承诺((解决、拒绝)=>{
dynamodb.update(参数,(错误,数据)=>{
//处理潜在的错误
如果(错误){
拒绝(错误);
}
否则{
控制台日志(“更新顾问响应”);
控制台日志(数据);
解析(数据);
}
});
});

}
实际上,您只是在构建查询字符串,因此请尝试使用文本:

function updateUser(data) {
    console.log('---------updateUser---------');
    console.log(data);
    const params = {
      TableName: process.env.USER_TABLE,
      Key: {
        id: data.id,
      },
      ExpressionAttributeValues: {
        ':updatedAt': timestamp,
        ':notificationCount':1
      },
      UpdateExpression: "ADD notificationCount :notificationCount REMOVE relatedUsers[" + data.index + "] SET updatedAt= :updatedAt",
      ReturnValues: 'ALL_NEW',
    };

    return new Promise((resolve, reject)=>{
      dynamodb.update(params, (error,data) => {
        // handle potential errors
        if (error) {
          reject(error);
        }
        else {
          console.log("update consultant response");
          console.log(data);
          resolve(data);
        }
      });
    });
  }