我已经使用 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
});
}
但是,即使我在本地运行时代码可以正常工作,也没有添加相关文档。
答案 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 }));
};