Выражение DynamoDB list_append ссылается на ошибку (node.js) - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь добавить новую задачу в массив моих задач на DynamoDB, и я получаю эту ошибку: "message": "Предоставленное выражение относится к атрибуту, который не существует в элементе"

Мой объект в БД выглядит так:

{
  "client_name": "New",
  "information": {
    "git_hub_url": "www.www.www",
    "is_in_production": true,
    "production_url": "www.www.www",
    "project_manager": "Nicolás",
    "tasks": [
      {
        "description": "Esta es una tarea de prueba",
        "estimated_finish_date": "22-10-2020",
        "name": "Tarea 1",
        "owner": "Juanito Laguna",
        "payment_status": "Pagado",
        "payment_type": "Express",
        "price": "$10000",
        "priority": "5",
        "start_date": "22-10-1993",
        "type": "Backend"
      },
      {
        "description": "Esta es una tarea de prueba (también)",
        "estimated_finish_date": "22-10-2010",
        "name": "Tarea 2",
        "owner": "Juanito Perez",
        "payment_status": "Pagado",
        "payment_type": "Express",
        "price": "$10000",
        "priority": "4",
        "start_Date": "22-10-1977",
        "type": "Frontend"
      }
    ]
  },
  "project_name": "testing_project"
}

И вот мой маршрут:

router.put('/:clientName/:projectName', (req, res) => {
  const { clientName, projectName } = req.params;
  const table = "Clients-Projects";
  const params = {
    TableName:table,
    Key:{
      "client_name": clientName,
      "project_name": projectName
    },
    UpdateExpression: 'SET #tasks = list_append(#tasks, :newTask)',
    ExpressionAttributeNames: {
      '#tasks': 'information.tasks'
    },
    ExpressionAttributeValues: {
      ":newTask": [req.body.newTask]
    },
    ReturnValues:"UPDATED_NEW"
  };
    console.log(params.ExpressionAttributeNames)
  docClient.update(params, (err, data) => {
    if (err) {
      console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
      res.status(200).json(data);
    }
  });
});

Я думаю, что моя ошибка в ExpressionAtributeName, но я не могу понять это (я новичок в DynamoDB).

Спасибо очень сильно !!!

1 Ответ

0 голосов
/ 11 февраля 2020

Я уже решил это. У был этот код:

const params = {
    TableName:table,
    Key:{
      "client_name": clientName,
      "project_name": projectName
    },
    UpdateExpression: 'SET #tasks = list_append(#tasks, :newTask)',
    ExpressionAttributeNames: {
      '#tasks': 'information.tasks'
    },
    ExpressionAttributeValues: {
      ":newTask": [req.body.newTask]
    },
    ReturnValues:"UPDATED_NEW"
  };

А теперь у меня есть это:

const params = {
    TableName:table,
    Key:{
      "client_name": clientName,
      "project_name": projectName
    },
    UpdateExpression: 'SET #tasks.tasks = list_append(#tasks.tasks, :newTask)',
    ExpressionAttributeNames: {
      '#tasks': 'information'
    },
    ExpressionAttributeValues: {
      ":newTask": [req.body.newTask]
    },
    ReturnValues:"UPDATED_NEW"
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...