1 node.js express firebase google-cloud-functions
我正在尝试从 firebase 获取用户数据,但我一直收到“无法获取/”错误。
//firebase init
const functions = require('firebase-functions');
const admin = require("firebase-admin");
admin.initializeApp();
//express and cors init
const express = require('express');
const cors = require('cors');
//middleware init
const app = express();
app.use(cors());
const database = admin.database();
app.get("/users", function (request, response) {
return database.ref('/users').on("value", snapshot => {
return response.status(200).send(snapshot.val());
}, error => {
console.error(database);
return response.status(500).send(err);
})
});
exports.users = functions.https.onRequest(app);
Run Code Online (Sandbox Code Playgroud)
我还尝试使用另一个网站的另一个功能,我指的是至少获取用户名,但它返回错误。
exports.users = functions.https.onRequest((req, res) => {
database().ref('/merchants').once('value').then(function(snapshot) {
var username = snapshot.val().username;
res.status(200).send(username);
});
});
Run Code Online (Sandbox Code Playgroud)
当您express通过 Cloud Functions导出应用程序时,路径将相对于导出的函数名称。您将您的应用程序导出为exports.users将您的函数的根路径设置为/users并调用它,您将访问https://us-central1-<project-id>.cloudfunctions.net/users.
但是,因为您还为/users(using app.get("/users", ...))定义了一个路由处理程序,所以您添加了一个 for 处理程序https://us-central1-<project-id>.cloudfunctions.net/users/users。
Cannot GET /抛出错误是因为当您在 处调用函数时https://us-central1-<project-id>.cloudfunctions.net/users,相对 URL 设置为"/",您尚未为其配置处理程序(使用app.get("/", ...))。
因此,要修复上面的代码,请更改
app.get("/users", function (request, response) {
Run Code Online (Sandbox Code Playgroud)
到
app.get("/", function (request, response) {
Run Code Online (Sandbox Code Playgroud)
问题可能就像您调用database()而不是调用一样简单admin.database()。
但是,此查询的目的尚不清楚,因此我假设您有一个商家的 ID,并且您正在尝试获取该特定商家的所有者的用户名。
这意味着数据结构类似于:
{
"users": {
"somePerson": { ... },
"otherPerson: { ... }
},
"merchants": {
"reallyGreatGuyInc": {
"username": "somePerson",
...
},
"realShadyPeopleInc": {
"username": "otherPerson",
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您导出了一个函数getMerchantUsername,在您通过 GET 参数传入商户 ID 并在 URL 处调用它https://us-central1-<project-id>.cloudfunctions.net/getMerchantUsername?id=reallyGreatGuyInc,您将使用以下代码定义它:
{
"users": {
"somePerson": { ... },
"otherPerson: { ... }
},
"merchants": {
"reallyGreatGuyInc": {
"username": "somePerson",
...
},
"realShadyPeopleInc": {
"username": "otherPerson",
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
笔记:
`/merchants/${req.query.id}/username`。| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |