Я пытаюсь получить данные из таблицы AWS DynamoDB и отобразить их в угловой таблице. Когда я это делаю, созданный массив возвращает длину 0, хотя в нем 12 значений. Я считаю, что это препятствует тому, чтобы Mat-Table воздействовал на изменение источника данных и в конечном итоге отображало данные.
Результаты консоли
Observable {_isScalar: true, _subscribe: ƒ, value: Array(0)}
value: (12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
_isScalar: true
_subscribe: ƒ (subscriber)
__proto__: Object
Код компонента
constructor(private dynamoService: DataDynamoService) {
let dataSource: Observable<Record[]> =
this.dynamoService.getAllRecords();
console.log(dataSource);
}
Код сервисной функции
getAllRecords(): Observable<Record[]> {
let dynDoc = {
TableName: "records-table",
};
let retData: Record[] = [];
Auth.currentCredentials()
.then(credentials => {
const dynamoDB = new DynamoDB.DocumentClient({
credentials: Auth.essentialCredentials(credentials),
region: 'us-east-1',
});
dynamoDB.scan(dynDoc).promise()
.then(function(data){
for(let record of data.Items){
let rec = {
value1: rec.value1,
value2: rec.value2,
value3: rec.value3,
value4: rec.value4
}
retData.push(rec);
}
})
})
return of(retData);
}
Я ожидаю Array (12) для длины, но получаю 0
Это сервисный код, который в конечном итоге сработал:
getAllRecords() {
let dynDoc = {
TableName: "my-table-name",
};
return Auth.currentCredentials()
.then(credentials => {
const dynamoDB = new DynamoDB.DocumentClient({
credentials: Auth.essentialCredentials(credentials),
region: 'us-east-1',
});
return dynamoDB.scan(dynDoc).promise()
.then(data => {return of(data.Items);
})
})
}