2017-01-24 5 views
0

Я новичок в firebase администратора SDK и пытается заставить его работать на моем angularjs приложения, используя и следующие шаги here и this here:

я правильно настроить мой firebase администратора SDK и инициализировать его, как это в server.js файл на моем сервере узла:

var admin = require("firebase-admin"); 

var serviceAccount = require("path/to/serviceAccountKey.json"); 

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://<DATABASE_NAME>.firebaseio.com" 
}); 
app.post('/.firebase-user', function (req, res, nex) { 
    admin.auth().getUser(req.body.uid) 
     .then(function (userRecord) { 
      // See the tables below for the contents of userRecord 
      console.log("Successfully fetched user data:", userRecord.toJSON()); 
     }) 
      res.status(200).send({data: userRecord.toJSON()}); 
      return nex(); 
     .catch(function (error) { 
      console.log("Error fetching user data:", error); 
      res.status(117); 
      return nex(); 
     }); 
}); 


теперь я хочу, чтобы получить доступ к userRecord.toJSON() внутри моего контроллера:

$http.post('/.firebase-user', {uid: firebase.auth().currentUser.uid}) 
     .then(function(response) { 
      console.log($scope.data, response.userRecord); 
     }); 


Но это не печать userRecord.toJSON(), а я true undefined в консоли. Пожалуйста, помогите мне получить информацию обратно в моем приложении. благодаря

ответ

1

Похоже, что есть несколько проблем с вашим (Express) запрос приложения обработчиком:

  1. В вашей угловой коде, вы делаете запрос на /.fb конечную точку, но в коде сервера вы слушатель на конечная точка /.firebase-user. Я предполагаю, что вы хотите, чтобы оба они были одинаковыми.
  2. Ваш код сервера никогда не отправляет ответ на Угловой код. Я удивлен, что ваш завершающий обработчик then() на самом деле завершает работу. Вам нужно будет явно отправить ответ с чем-то вроде res.status(200).send(userRecord.toJSON()) в случае успеха и res.status(400).send({ error: error }) в случае ошибки.
  3. Вы должны добавить catch() к вашему Угловому коду, чтобы убедиться, что вы обнаружите ошибки или неудачные запросы, сделанные кодом сервера.
+0

Вы правы, я забыл упомянуть о части res.send ... и я ошибся, чтобы не иметь ту же конечную точку, это нормально в моем коде, но когда вы скопировали в stackoverflow, я забыл чтобы было ясно. Часть, которую я сейчас упускаю, связана с угловым уловом. не могли бы вы привести пример. Благодарю. – passion

+0

Ваш объект 'response' имеет ключ' data', а не 'userRecord'. Чтобы увидеть это, выполните «console.log (response)», чтобы распечатать весь ответ. В вашем Угловом коде вам следует использовать 'response.data' вместо' response.userRecord'. Это должно решить вашу проблему. Что касается добавления 'catch()', просто сделайте что-то похожее на то, что вы сделали с 'catch()' в вашем коде сервера. – jwngr

+0

Я принял ваш ответ, но я бы оценил его, если бы у вас был хороший рабочий пример, так что будущие пользователи stackoverflow могли бы атаковать ваш ответ и воспринимать его как модель, а не читать комментарии; – passion

 Смежные вопросы

  • Нет связанных вопросов^_^