Как получить выпадающее (комбинированное окно) значение, которое заполняется базой данных Firebase Realtime в Node.js? - PullRequest
0 голосов
/ 26 февраля 2020

Я проверил несколько ответов на переполнение стека, но ни один из них не отвечает на мой вопрос. Я заполнил выпадающие списки (HTML Выбор и опция), используя базу данных огня следующим образом:

Nodejs

function getClients() {
    const ref = firebaseApp.database().ref('clients');
    return ref.once('value').then(snap => snap.val());
}

app.get('/clients', (request,response) => {
    // response.set('Cache-Control', 'public, max-age=300, s-maxage=600');
    getClients().then(clients => {
        response.render('clients', { clients })
    });
})

HTML (с рулем)

        <label for="client">Client</label>
        <select id="client" name="client">
            <option>Choose Client</option>
            {{#each clients}}
            <option value="{{this}}">{{name}}</option>
            {{/each}}
        </select>

Раскрывающийся список заполнен правильно, но моя проблема в том, что написать в option значении, чтобы иметь возможность получить дочерний элемент key.

Edit (добавлен json эквивалент моего структура базы данных)

{
  "clients" : {
    "-M0wyt-_2cC2nACDArUR" : {
      "email" : "c",
      "name" : "a",
      "number" : "b"
    },
    "-M0wzLp-7p1qboJZ1srB" : {
      "email" : "e",
      "name" : "q",
      "number" : "w"
    }
  }
}

Заранее благодарим за помощь.

1 Ответ

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

Вам может потребоваться изменить рендеринг:

getClients().then(clients => {
   const clientArray = Object.keys(clients)
     .map(client => ({key: client, ...clients[client]}))
   console.log(clientArray)
   response.render('clients', { clients: ClientArray })
});

См. Этот фрагмент для преобразования данных, выполняемых этой функцией карты.

const data = {
  "clients" : {
    "-M0wyt-_2cC2nACDArUR" : {
      "email" : "c",
      "name" : "a",
      "number" : "b"
    },
    "-M0wzLp-7p1qboJZ1srB" : {
      "email" : "e",
      "name" : "q",
      "number" : "w"
    }
  }
}

const clients = data.clients
const clientArray = Object.keys(clients)
   .map(client => ({key: client, ...clients[client]}))
console.log(clientArray)
...