我们正在修改的Trivia游戏使用TypeScript及其自己的本地数据库来代替Open Trivia DB。有很多我不想弄乱的异步/等待功能(在需要旧数据库功能的情况下),因此我开始使用Fetch。
到目前为止,这是我的代码:
public async getCategories() { let cats = null; let counts = null; if (!this.IS_USING_OTDB) { cats = await this.db.query('SELECT DISTINCT categoryid, category FROM questionsTest ORDER BY categoryid'); counts = await this.db.query('SELECT categoryid, category, difficulty, count(*) FROM questionsTest GROUP by categoryid, category, difficulty ORDER BY count DESC'); console.log(cats.rows, cats.rowCount, counts.rows); } else { console.log('Connecting to opentdb instead of postgres.'); const fetchResult = await fetch('https://opentdb.com/api_category.php'); console.log(fetchResult); const body = fetchResult.json; console.log(JSON.stringify(body)); } // more code for processing here }
从本质上讲,它不会崩溃,它本身就可以工作。但是,结果(控制台已记录fetchResult)不是我所期望的:
Response { size: 0, timeout: 0, [Symbol(Body internals)]: { body: PassThrough { _readableState: [ReadableState], readable: true, _events: [Object: null prototype], _eventsCount: 5, _maxListeners: undefined, _writableState: [WritableState], writable: true, allowHalfOpen: true, _transformState: [Object], [Symbol(kCapture)]: false }, disturbed: false, error: null }, [Symbol(Response internals)]: { url: 'https://opentdb.com/api_category.php', status: 200, statusText: 'OK', headers: Headers { [Symbol(map)]: [Object: null prototype] }, counter: 0 } }
的JSON分类结果fetchResult.json也是undefined。
这很奇怪,因为链接https://opentdb.com/api_category.php会立即返回以下内容(您可以通过单击上面的链接自行检查它):
{"trivia_categories":[{"id":9,"name":"General Knowledge"},{"id":10,"name":"Entertainment: Books"},{"id":11,"name":"Entertainment: Film"},{"id":12,"name":"Entertainment: Music"},{"id":13,"name":"Entertainment: Musicals & Theatres"},{"id":14,"name":"Entertainment: Television"},{"id":15,"name":"Entertainment: Video Games"},{"id":16,"name":"Entertainment: Board Games"},{"id":17,"name":"Science & Nature"},{"id":18,"name":"Science: Computers"},{"id":19,"name":"Science: Mathematics"},{"id":20,"name":"Mythology"},{"id":21,"name":"Sports"},{"id":22,"name":"Geography"},{"id":23,"name":"History"},{"id":24,"name":"Politics"},{"id":25,"name":"Art"},{"id":26,"name":"Celebrities"},{"id":27,"name":"Animals"},{"id":28,"name":"Vehicles"},{"id":29,"name":"Entertainment: Comics"},{"id":30,"name":"Science: Gadgets"},{"id":31,"name":"Entertainment: Japanese Anime & Manga"},{"id":32,"name":"Entertainment: Cartoon & Animations"}]}
如何从URL中获取上述结果?我有想念吗?