Amazon Lambda to Firebase

前端 未结 7 1489
甜味超标
甜味超标 2020-11-30 03:42

I get \'Cannot find module \'firebase\' when I try to run this in Lambda (Node.js 4.3)

var Firebase = require(\'firebase\');

Same thing hap

7条回答
  •  不知归路
    2020-11-30 03:46

    2017-03-22 edit: google just announced firebase cloud functions, which is a much better way to do this. Cloud functions work just like lambda, and can trigger from firebase events.


    Here's my solution using the REST api (so you don't need to require anything):

    var https = require('https');
    var firebaseHost = "yourapp.firebaseio.com";
    function fbGet(key){
      return new Promise((resolve, reject) => {
        var options = {
          hostname: firebaseHost,
          port: 443,
          path: key + ".json",
          method: 'GET'
        };
        var req = https.request(options, function (res) {
          res.setEncoding('utf8');
          var body = '';
          res.on('data', function(chunk) {
            body += chunk;
          });
          res.on('end', function() {
            resolve(JSON.parse(body))
          });
        });
        req.end();
        req.on('error', reject);
      });
    }
    
    function fbPut(key, value){
      return new Promise((resolve, reject) => {
        var options = {
          hostname: firebaseHost,
          port: 443,
          path: key + ".json",
          method: 'PUT'
        };
    
        var req = https.request(options, function (res) {
          console.log("request made")
          res.setEncoding('utf8');
          var body = '';
          res.on('data', function(chunk) {
            body += chunk;
          });
          res.on('end', function() {
            resolve(body)
          });
        });
        req.end(JSON.stringify(value));
        req.on('error', reject);
      });
    }
    

    You can use it like this:

    fbPut("/foo/bar", "lol").then(res => {
      console.log("wrote data")
    })
    

    And then:

    fbGet("/foo/bar").then(data => {
      console.log(data); // prints "lol"
    }).catch(e => {
      console.log("error saving to firebase: ");
      console.log(e);
    })
    

提交回复
热议问题