2016-04-08 13 views
6

Tôi đang cố cập nhật một Mục trong Bảng Dynamodb + Người dùng + của mình. Tôi đã thử nhiều cách khác nhau nhưng tôi luôn nhận được cùng một thông điệp báo lỗi:DynamoDB - Phần tử khóa không khớp với lược đồ

Các yếu tố quan trọng cung cấp không phù hợp với sơ đồ

Việc tạo ra một mục công trình, cũng như một truy vấn nhưng không bản cập nhật. Khi tôi kiểm tra trên DynamoDB người dùng cũng tạo:

{ 
    "email": "[email protected]", 
    "password": "123", 
    "registration": 1460136902241, 
    "verified": false 
} 

Dưới đây là thông tin bảng:

  • Bảng tên: Người dùng
  • phân vùng Primary key: Email (String)
  • Khóa phân loại chính: đăng ký (Số)

Đây là mã (gọi từ lambda):

exports.handler = function(event, context) 
{ 
    var AWS = require("aws-sdk"); 


    var docClient = new AWS.DynamoDB.DocumentClient(); 

    var params = { 
     TableName: "Users", 
     Item:{ 
      email: "[email protected]", 
      password: "123", 
      verified: false, 
      registration: (new Date()).getTime(), 
     } 
    }; 

    // Create the user. 

    docClient.put(params, function(err, data) 
    { 
     if (err) 
     { 
      context.fail("Put failed..."); 
      return; 
     } 

     var params = { 
      TableName: "Users", 
      Key: { email : "[email protected]" }, 
      AttributeUpdates: { 
       verified: { 
        Action: "PUT", 
        Value: true 
       } 
      } 
     }; 

     // Update the user. 
     docClient.update(params, function(err, data) 
     { 
      if (err) 
      { 
       console.log(JSON.stringify(err)); 
       context.fail(JSON.stringify(err)); 
       return; 
      } 
      context.succeed("User successfully updated."); 
     }); 


    }); 

}; 

Bạn có bất cứ ý tưởng về những gì có thể sai trong mã của tôi?

Trả lời

15

Bạn chỉ đang cung cấp một nửa khóa chính của mình. Khóa chính của bạn là sự kết hợp của khóa phân vùng và phím phạm vi. Bạn cần bao gồm khóa phạm vi trong thuộc tính Key của mình trong thông số cập nhật.

+1

Nó hoạt động, cảm ơn bạn! Nhưng có thể chỉ có địa chỉ email làm khóa chính không? – user6178502

+0

Có thể chỉ có địa chỉ email làm khóa chính. http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.CreateTables.html – auhuman

Các vấn đề liên quan