Firestore无法与AWS Lambda一起使用

时间:2018-08-20 16:54:19

标签: node.js amazon-web-services firebase aws-lambda google-cloud-firestore

我已经使用 Node.js 8.10 运行时在 AWS lambda 函数中初始化了 firebase 。这是相关代码:

'use strict';

const https = require('https'),
      firebase = require('firebase-admin'),
      admin = require('firebase-admin');
//Initialize firebase
let serviceAccount = require('./one-deed-6b407-firebase-adminsdk-ha9ud-3c7ddb5906.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)

});
let db = admin.firestore();

稍后在代码中,我创建了一个 firestore 数据库:

exports.handler = (event, context, callback) => {
   var docRef = db.collection('users').doc('alovelace');

   var setAda = docRef.set({
     first: 'Ada',
     last: 'Lovelace',
     born: 1815
   });
} 

但是,即使我在本地运行时代码可以正常工作,也没有添加相关文档。

1 个答案:

答案 0 :(得分:0)

看看函数的执行时间。它应该很小。 Lambda代码不等待Firestore函数执行。

正如@ doug-stevenson指出的,您没有使用诺言。 将lambda函数更改为async,然后在该集合的前面等待。 希望对您有所帮助。

/* global fetch */
/* global window */
import camelize from 'camelize';
import SC from 'soundcloud';

export const callApi = (url, options) =>
  fetch(url, options)
    .then(
      response => (response.ok
        ? response.json()
        : Promise.reject(response.text())
      ),
      error => Promise.reject(error))
    .then(
      json => ({ json: camelize(json) }),
      error => ({ error }))
    .catch(error => ({ error }));

export const loginToSoundCloud = (clientId) => {
  SC.initialize({
    client_id: clientId,
    redirect_uri: `${window.location.protocol}//${window.location.host}/api/callback`,
  });

  return SC.connect()
    .then(
      json => ({ json: camelize(json) }),
      error => ({ error }),
    )
    .catch(error => ({ error }));
};