Как использовать Firebase с Nativescript- Vue? - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь реализовать простую выборку Firebase с ноября. На данный момент я sh я только что создал новый API Rails; это было бы быстрее. Но все настаивают на том, что Firebase - это так просто.

В приложении. js,

import firebase from 'nativescript-plugin-firebase';

Эта часть выглядит нормально. Инструкции повсюду после этого. ReadMe плагина предлагает инициализацию:

firebase.init({
  // Optionally pass in properties for database, authentication and cloud messaging,
  // see their respective docs.
}).then(
    function () {
      console.log("firebase.init done");
    },
    function (error) {
      console.log("firebase.init error: " + error);
    }
);

Несколько других настаивали на том, что код инициализации не нужен. Он работает без ошибок, но код, который он дает после этого, ничего не дает. Кроме того,

const db = firebase.firestore;
const UserStatusCollection = db.collection("UserStatus"); 
UserStatusCollection.get();

создает пустой объект {}.

Вот моя коллекция Firebase: Here's my Firebase collection.

Если я заверну вызов Firebase в async / await (и никто не показывает его как сложный),

async function getFireStoreData() {
  try {
    let result = await this.UserStatusCollection.get();
    console.log(result);
    return result;
  } 
  catch (error) {
    console.error(
      "UserStatusCollection.get()" + error
    );
  }
}

И назовите это

let temp2 = getFireStoreData();
console.log("temp2:" + temp2);

Все, что я когда-либо получу, - это обещание объекта.

Как я уже сказал, я sh Я только что построил новый Rails API и имел гораздо более простую жизнь с ноября.

1 Ответ

1 голос
/ 21 февраля 2020

Ваш getFireStoreData метод является асинхронным, и вы не await его используете. Это, вероятно, причина, почему вы получаете обещание обратно. Попробуйте await getFireStoreData(). Посмотрите, работает ли это.

Поскольку это также обещание, вы можете попробовать использовать .then.

getFireStoreData().then(data => {
  console.log(data);
})

...