angular - 如何在 Angular 中使用 getObject 函数(aws / S3)在可观察对象内传递值
问题描述
我尝试使用 Angular (4.4.6) 学习可观察编程:
喜欢做的事:从 AWS/S3 Storage 获取 json 文件,保存内容(字符串),返回 observable 中的内容。
员工服务.ts:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import 'rxjs/add/observable/of';
import * as AWS from 'aws-sdk/global';
import * as S3 from 'aws-sdk/clients/s3';
...
getNotice (userid): Observable<String> {
const params = {
Bucket: 'data.feedback.domain.de',
Key: 'employees/' + userid + '/notice/notice.json'
};
var objectData = '';
this.bucket.getObject(params, function (err, data) {
if (err) {
console.log('There was an error getting your files: ' + err);
return;
}
console.log('Successfully get file: notice.json:', data.Body.toString());
objectData = data.Body.toString();
});
console.log('objectData:', objectData);
return Observable.of(objectData);
}
...
在 getObject 函数中,我收到文件 notice.json,在控制台中,我看到保存在 notice.json 中的字符串。
但是用objectData = data.Body.toString()保存数据是行不通的。
任何提示,我做错了什么?
解决方案
它看起来像异步错误,您需要从回调函数内部将数据粘贴到可观察的
import { create } from 'rxjs';
...
getNotice (userid): Observable<String> {
const params = {
Bucket: 'data.feedback.domain.de',
Key: 'employees/' + userid + '/notice/notice.json'
};
var objectData = '';
return create(observer => {
this.bucket.getObject(params, function (err, data) {
if (err) {
console.log('There was an error getting your files: ' + err);
observer.error(err);
}
console.log('Successfully get file: notice.json:', data.Body.toString());
objectData = data.Body.toString();
observer.next(objectData);
});
}
推荐阅读
- php - SQL语法错误检查与您的MariaDB服务器版本相对应的手册,以获取在附近使用的正确语法
- vb.net - Newtonsoft JsonProperty 订单属性的 VB.NET 语法
- graph-theory - 这是一个什么样的图表?
- javascript - 从 JSON Array Javascript 创建菜单
- ios - 从使用 Gmail 帐户的电子邮件应用程序打开我的 iOS 现有应用程序不起作用
- javascript - “无法读取 null 的属性‘addEventListener’”以加载元素
- c - 我编译这个 c 文件没有错误或警告,但是当我运行它时不返回任何结果
- angular - html2canvas 在 Angular 应用程序中抛出非代码破坏承诺错误。
- c# - 具有重复 ID 的集合展平为一行
- python - 当不满足 target_accept 时,pymc3 有没有办法引发异常?