Не совсем уверен, где моя ошибка, я использую функцию сопоставления AWS DynamoDb в node.js, но получаю эту ошибку:
Предоставленный элемент не соответствует протоколу DynamoDbTable. нет
Свойство string было найдено в символе DynamoDbTable
Я следовал учебному пособию, которое они предоставляют, я внес некоторые изменения, чтобы я мог использовать cjs, но, похоже, не смог найти проблему.
const {
DynamoDBSchema,
DynamoDBTable,
embed
} = require("@aws/dynamodb-data-mapper");
const v4 = require("uuid/v4");
class Invoice {}
Object.defineProperties(Invoice.prototype, {
DynamoDBTable: {
value: 'invoices'
},
[DynamoDBSchema]: {
value: {
id: {
type: "String",
keyType: "HASH",
defaultProvier: v4
},
invoiceId: {type:'String'},
firstname:{type:'String'},
lastname:{type:'String'},
email:{type:'String'},
items:{type:'List',memberType:{type:'Map'}},
tax:{type:'String'},
total:{type:'String'},
paymentStatus:{type:'String'},
paymentType:{type:'String'},
paymentInfo:{type:'List',memberType:{type:'Map'}}
}
}
});
module.exports = Invoice;
const AWS = require("aws-sdk");
const {DataMapper} = require('@aws/dynamodb-data-mapper');
const Invoice= require('../models/invoices.model');
const ddb = new AWS.DynamoDB({
region: "us-east-1",
endpoint: "http://localhost:1948"
});
const ddbDoc = new AWS.DynamoDB.DocumentClient({
region: "us-east-1",
endpoint: "http://localhost:1948"
})
const mapper = new DataMapper({
client: new AWS.DynamoDB({region: "us-east-1",
endpoint: "http://localhost:1948"})
})
let data = new Invoice();
//mapper.put({data}).then(console.log).catch(console.log)
async function getItems(){
for await( const foo of mapper.scan(data,{indexName:'Invoiceid-Email'}) ){
console.log(foo)
}
}
getItems().then(console.log).catch(console.log);