Я хочу - как администратор - создать пользователя с помощью firebase-admin с помощью node.js и обработать все это внутри приложения Angular 6.
Firebase-admin в node.js работает как чудоно когда мне нужно реализовать функции для управления созданием пользователя и тому подобное, когда я застреваю.
Итак, главный вопрос: как мне отредактировать код моего сервера, чтобы получитьвходные данные из моего углового приложения, а затем создать пользователя с этими значениями? Я пытался с
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, я получаю эту ошибку:
patients-add.component.ts:28 HttpErrorResponse {headers: HttpHeaders, status: 404, statusText: "Not Found", url: "http://localhost:4000/patient-add", ok: false, …}
Строка 28 of Patient-add.component.ts такова:
this.auth.createUser('John Doe', 'hello@gmail.com', 'superpassword', '+12389298').toPromise().then(result => {
console.log(result);
}).catch(err => {
console.log(err);
});
Спасибо всем заранее!