【发布时间】:2020-01-07 17:34:39
【问题描述】:
此代码不会在 localhost 中返回任何数据,但在部署到 firebase 时效果很好。有什么建议? (尝试使用“firebase emulators:start”和“npm run serve”)。
我应该得到一个包含课程的 json 对象。
我尝试使用 try/catch 没有任何结果:
- 'npm run server'(“npm run build && firebase serve --only 函数”)
错误:无法加载默认凭据。错误:未处理 不推荐使用承诺拒绝。未来,承诺 未处理的拒绝将终止 Node.js 进程 非零退出代码。 UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误 起源于在没有捕获的情况下抛出异步函数内部 阻止,或拒绝未使用 .catch() 处理的承诺
- 'firebase emulators:start' -> 没有错误,但 json 为空:{"courses":[]}
import * as functions from 'firebase-functions';
import {db} from './init';
import * as express from "express";
const cors = require('cors');
const app = express();
app.use(cors({origin:true}));
app.get('/courses', async (request, response) => {
const snaps = await db.collection('courses').get();
const courses:any[] = [];
snaps.forEach(snap => courses.push(snap.data()));
response.status(200).json({courses});
});
export const getCourses = functions.https.onRequest(app);
_____________________________________________________________________________
init.ts
const admin = require('firebase-admin');
admin.initializeApp();
export const db = admin.firestore();
app.get('/courses', async (request, response) => {
try {
const snaps = await db.collection('courses').get();
const courses:any[] = [];
snaps.forEach((snap: any) => courses.push(snap.data()));
response.status(200).json({courses});
}
catch(err) {
console.error(err)
}
});
export const getCourses = functions.https.onRequest(app);
【问题讨论】:
-
您到底在做什么,并观察到与您预期的不同?请编辑问题并具体说明,以便任何人都可以重现您的体验。
-
当然,我提供了更多信息。感谢您的建议。
-
错误消息显示“此错误源于在没有 catch 块的情况下抛出异步函数内部”。是否需要通过 try/catch 来确定数据库操作是否失败?
-
我尝试使用 try/catch 没有任何结果。还有其他方法可以尝试/捕获吗?
标签: node.js typescript firebase google-cloud-functions