Как мне написать в Firestore, используя Angular 5? - PullRequest
0 голосов
/ 16 мая 2018

Я подключил свой чек Stripe к базе данных реального времени Firebase, используя это руководство https://angularfirebase.com/lessons/angular-stripe-payments-part-2-firebase-cloud-functions-backend/

Это успешно. Однако мне нужно, чтобы процесс оформления заказа работал с использованием Firestore, так как мы перенесли нашу базу данных туда. К сожалению, это не работает! Функция работает, НО данные все еще сохраняются в базе данных реального времени, а не в Firestore. Вот мой код:

const functions = require('firebase-functions');
const admin = require('firebase-admin')

admin.initializeApp(functions.config().firebase);

const firebaseConfig = JSON.parse(process.env.FIREBASE_CONFIG);

const db = admin.firestore(); // Firebase
const stripe = require('stripe')(functions.config().stripe.testkey) // Stripe

exports.stripeCharge = functions.firestore
                                .document('/payments/{userId}') 
                                .onWrite(event => {

    const payment = event.data.val();
    const userId = event.params.userId;
    const paymentId = event.params.paymentId;

    // checks if payment exists or if it has already been charged
    if (!payment || payment.charge) return;

    return admin.firestore()
          .collection('payments')
          .doc('{userId}')
          .once('value')
          .then(snapshot => {
              return snapshot.val();
           })
           .then(customer => {

             const amount = payment.amount;
             const idempotency_key = paymentId;  // prevent duplicate charges
             const source = payment.testkey.id;
             const currency = 'php';
             const charge = {amount, currency, source};


             return stripe.charges.create(charge, { idempotency_key });

           })

           .then(charge => {
               db
               .collection('payments')
               .doc('{userId}')
               .collection('{paymentId}')
               .field('charge')
               .set(charge)
              })

 });

Начиная с первой части руководства, структура базы данных выглядит следующим образом:

payments
    $userId
        $paymentId
             amount: number
             token: object
             charge: object

1 Ответ

0 голосов
/ 16 мая 2018

Я думаю, что вы используете firebase-функции> 1.0.0

admin.initializeApp();

Проверьте полное руководство по миграции здесь

...