Cloud Firestore возвращает неопределенные события - PullRequest
0 голосов
/ 19 марта 2019

Все.

Я пытаюсь создать скрипт, который создает данные в Cloud Firestore и возвращает их.Но я не могу получить доступ к данным (не определено), почему?

Это мой сценарий:

const tools = require('./bin/firebase');
const app = require('express')();
// eslint-disable-next-line new-cap
const server = require('http').Server(app);
const io = require('socket.io')(server);

server.listen(3000);

const db = tools.connectFirebase();

io.on('connection', (socket) => {
  const ipAddress = socket.handshake;

  console.log(ipAddress.address);

  db.collection('socket').doc('refresh').collection('2').doc('1').set({
    name: 'Los Angeles',
  });

  db.collection('socket').doc('refresh').onSnapshot((doc) => {
    console.log('Current data: ', doc.data());
  });

  socket.on('disconnect', () => {
    console.log('Disconnected.');
  });
});

И вот что возвращает этот сценарий: Изображение

И, наконец, я хотел вернуть данные Cloud Firestore: Изображение

Мне нужно вернуть эти узлы, так что: в основном мне нужно что-то вроде этого:

{
    1: {
        name: "Los angeles:",
    },
    2: {
        name: "Washington DC",
    },
}

В принципе, мне нужно это исправить, кто-нибудь может помочь мне разобраться с этим?

(Извините за мои навыки английского, я пытаюсь улучшить его)

1 Ответ

0 голосов
/ 19 марта 2019

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

  db.collection('socket').doc('refresh').collection('2').doc('1').set({
    name: 'Los Angeles',
  }).then(() => db.collection('socket').doc('refresh').onSnapshot((doc) => {
    console.log('Current data: ', doc.data());
  }));

Редактировать: о, извините, вы читаете / сокет / обновление, которое, вероятно, пусто.Подколлекции под ним не отправляются как json, как вы описали выше.Вы должны сделать db.collection('socket').doc('refresh').collection('2').doc('1'), чтобы прочитать их.Вы не можете получить поддерево как JSON, как вы ожидали.

Идите и поместите некоторые данные в / socket / refresh, и, надеюсь, они больше не будут неопределенными.

...