DynamoDB: невозможно обновить элемент DynamoDB в node js - PullRequest
0 голосов
/ 30 января 2020

Я новичок в DynamoDB, я пытаюсь обновить и получить элемент в БД, но не могу, всегда получаю "Предоставленный ключевой элемент не соответствует схеме"

это мой код serverless.yml для DynamoDB

    resources:
  Resources:
    TodosDynamoDbTable:
      Type: 'AWS::DynamoDB::Table'
      DeletionPolicy: Retain
      Properties:
        AttributeDefinitions:
          -
            AttributeName: id
            AttributeType: S
          -
            AttributeName: in_organization_id
            AttributeType: S
          -
            AttributeName: sp_customer_id
            AttributeType: S
          -
            AttributeName: qb_customer_id
            AttributeType: S
        KeySchema:
          -
            AttributeName: id
            KeyType: HASH
          -
           AttributeName: in_organization_id
           KeyType: RANGE
          -
           AttributeName: sp_customer_id
           KeyType: RANGE
          -
           AttributeName: qb_customer_id
           KeyType: RANGE
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
        TableName: 'insightly'

, и это мой метод обновления

/* Update Record in DB */
      this.UpdateDB = (event) => {
        return new Promise(async (resolve, reject) => {
          try {
            const data = event;
            const params = {
              TableName: process.env.TABLE_NAME,          
              Key: {
                in_organization_id : data.in_organization_id
                },     
              UpdateExpression: "set qb_customer_id = :qb_customer_id",
              ExpressionAttributeValues:{
                  ":qb_customer_id":data.qb_customer_id
              },
              ReturnValues:"UPDATED_NEW"}
            const response=await dynamoDb.update(params).promise();
            resolve(response);
          } catch (err) {
            reject(err.message);
          }
        });
      };

Как и у меня есть getmethod, чтобы получить элемент

/* Get/Check Org ID from DB */
  this.checkOrgID = (OrgID) => {
    return new Promise(async (resolve, reject) => {
      try {
        const params = {
          TableName: process.env.TABLE_NAME,
           Key: {in_organization_id :OrgID}
        };
        const response = await dynamoDb.get(params).promise();
        resolve(response);
      } catch (err) {
        reject(err.message);
      }
    });
  };

, но это всегда дает мне ошибку. Пожалуйста, помогите мне найти решение. Заранее спасибо.

1 Ответ

0 голосов
/ 30 января 2020

если вы используете AWS SDK для Javascript, вы можете использовать информацию ниже:

const document = { 
  document_id: "1",
  name: "John",
  lastname: "Snow" 
}

, где document_id - мой ключ

return dynamodb
    .put({ TableName: 'tableName', Item: document })
    .promise();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...