我想(作为管理员)使用node.js使用firebase-admin创建用户并处理Angular 6 App中的所有内容。
node.js中的firebase-admin就像一个魅力,但是当我必须实现处理用户创建的功能时,就像我坚持的那样。
所以,主要问题是:如何编辑服务器代码以从我的角度应用程序获取输入数据,然后使用这些值创建用户?我尝试过
router.route('/patient-add').get((req, res) => {
if (res.send) {
admin.auth().createUser({
email: req.body.email
})
但没有任何反应。
这是我的nodejs代码(server.js)
import express from 'express';
import * as admin from 'firebase-admin';
import cors from 'cors';
import bodyParser from 'body-parser';
const app = express();
const router = express.Router();
const superserviceadminKey = 'path/to/serviceAccountKey.json';
app.use(cors());
app.use(bodyParser.json());
admin.initializeApp({
credential: admin.credential.cert(superserviceadminKey),
databaseURL: 'https://mysuperdatabase.firebaseio.com'
});
app.use('/', router);
router.route('/patient-add').get((req, res) => {
if (res.send) {
admin.auth().createUser({
email: "someemail2@gmail.com",
emailVerified: false,
phoneNumber: "+198089930",
password: "secretPassword",
displayName: "Luciphagous, the dog",
photoURL: "http://www.example.com/12345678/photo.png"
})
.then(function(userRecord) {
// See the UserRecord reference doc for the contents of userRecord.
console.log("Successfully created new user:", userRecord.uid);
})
.catch(function(error) {
console.log("Error creating new user:", error);
});
}
});
app.listen(6666, () => console.log('Express server running on port 6666'));
正如我之前说过的,上面的代码工作得很好。问题是我必须在Firebase中创建用户之前将值放入。我可以从HTML表单中获取值并将其从前端注入到后端吗?
所以,我猜想我可以使用Angular来解决这个问题,并创建了一个服务。这是代码:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class AuthService {
uri = 'http://localhost:6666';
constructor(private http: HttpClient) { }
createUser(displayName, email, pass, phoneNumber) {
const userReg = {
displayName: displayName,
email: email,
password: pass,
phoneNumber: phoneNumber
};
return this.http.post(`${this.uri}/patient-add`, userReg);
}
}
当我在Angular App中执行它时,我收到此错误:
patients-add.component.ts:28 HttpErrorResponse {headers: HttpHeaders, status: 404, statusText: "Not Found", url: "http://localhost:4000/patient-add", ok: false, …}
Patient-add.component.ts的第28行是这样的:
this.auth.createUser('John Doe', 'hello@gmail.com', 'superpassword', '+12389298').toPromise().then(result => {
console.log(result);
}).catch(err => {
console.log(err);
});
提前感谢大家!