Я пытаюсь написать в firestore из функции onCall firebase
functions.js
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
console.log('initialing functions at ' , new Date().toString())
exports.getLinks = functions.runWith({ timeoutSeconds: 540 }).https.onCall( (data,context) => {
console.log('starting to get links ' , new Date().toString())
console.log('data' , data.query, data.limit, data.country, data.uid)
console.log('context auth', context.auth, 'context.auth.uid', context.auth.uid)
// is there anything like admin.setCredentials(context.auth) necessary here?
const queries = admin.firestore().collection('queries');
let uid = data.uid
console.log('uid', uid);
console.log('queries ref', queries)
//probably when trying to write here is not being allowed
queries.doc(uid).set({LinksArrayLength: 'starting'})
.then( r => console.log('writing to firestore 1 result', r))
.catch( err => console.error('writing to firestore 2 error', err))
Вывод на консоль выглядит так
начало получать ссылки пт 31 мая 2019 19:01:10 GMT-0300 (GMT-03: 00)
данные продаются везде 2 ком fwfwqe
контекстная аутентификация {
uid: 'f23oij2ioafOIJOeofiwjOIJ',
токен: {
iss: 'https://securetoken.google.com/was98oinr-fa4c9',
aud: 'was234r-f32c9',
auth_time: 1559327744,
user_id: 'f23oij2ioafOIJOeofiwjOIJ',
sub: 'f23oij2ioafOIJOeofiwjOIJ',
iat: 1559338208,
эксп: 1559341808,
электронная почта: 'awef3h@gmail.com',
email_verified: false,
firebase: {identity: [Object], sign_in_provider: 'password'},
uid: 'f23oij2ioafOIJOeofiwjOIJ'
}
} context.auth.uid f23oij2ioafOIJOeofiwjOIJ
uid f1EMxzwjJlTaH3u7RAYsySx0MZV2
запросы ref CollectionReference {
_firestore: Firestore {
_settings: {
идентификатор проекта: «ххх»,
firebaseVersion: «7.0.0»,
libName: 'gccl',
libVersion: '1.3.0 fire / 7.0.0'
},
а затем запрещенный запрос на запись в firestore?
writing to firestore 2 error Error: Unexpected error determining execution environment: Invalid response from metadata service: incorrect Metadata-Flavor header.
> at GoogleAuth.<anonymous> (H:\nprojetos\whats_app_sender\firebase_sender\vue_sender\wa_sender\functions\node_modules\google-auth-library\build\src\auth\googleauth.js:164:23)
> at Generator.throw (<anonymous>)
> at rejected (H:\nprojetos\whats_app_sender\firebase_sender\vue_sender\wa_sender\functions\node_modules\google-auth-library\build\src\auth\googleauth.js:20:65)
> at processTicksAndRejections (internal/process/task_queues.js:89:5)
Как я могу обеспечить отправку request.auth.uid в запрос на запись в пожарном депо?
Правила хранения файлов
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;//: if request.auth.uid != null;
// even when commented and allowing all requests still giving the error //message
}
}
}
Даже при полном разрешении продолжает выдавать ошибку.
Я пытаюсь написать в firestore, чтобы обновить клиентскую часть, когда что-то записывается в коллекции («запросы») ... так, чтобы клиент получал уведомление о прогрессе функции ...
Есть ли лучший способ сделать это также?
На стороне клиента код выглядит так
на стороне клиента
fireApp.firestore().collection('queries').doc(this.getUser.uid).onSnapshot(snap => {
debugger
console.log('snap', snap)
snap.exists ?
snap.docChanges().forEach(async change => {
if (change.type === "modified") {
_vue.updating = true // the function is in progress