Estou tentando gravar dados em nuvem firestore de funções de nuvem e não estou fazendo funcionar. Aqui está meu código em funções de nuvem:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
var express = require('express');
admin.initializeApp(functions.config().firebase);
const app = express();
let db = admin.firestore();
app.get('/helloworld', (req, res) => res.send('Hello World!'));
app.post('/signup', (req, res) => {
var email = req.body.email;
var username = req.body.username;
var password = req.body.password;
//creating document. Here is where it isn't working
let docRef = db.collection('UsersMain').doc('firstdoc');
let data = {
Email: '[email protected]',
UserName: 'Matt'
};
let setDoc = docRef.set(data);
console.log(db);
res.send('Login Complete');
});
const api1 = functions.https.onRequest(app);
module.exports = {api1};
e aqui estão minhas permissões de armazenamento de fogo:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
Alguém pode dar uma olhada e me dizer o que estou fazendo de errado? Idealmente, um novo documento chamado 'firstdoc' seria criado e teria os dados de e-mail e nome de usuário nele. Obrigado!
A primeira coisa que vem à mente ao observar seu código é que você não está esperando docRef.set(data)
a conclusão para enviar um resultado de volta ao chamador. Isso significa que o Cloud Functions pode eliminar seu ambiente antes que a gravação no Firestore seja concluída.
Para garantir que a gravação seja concluída, você só deve gravar um resultado na resposta depois que a gravação no banco de dados for concluída. Algo como:
docRef.set(data).then(() => {
res.send('Login Complete');
})
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras