Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在firebase上的云函数中在单个请求中读取多个用户id的数据_Node.js_Firebase_Firebase Realtime Database_Firebase Admin - Fatal编程技术网

Node.js 如何在firebase上的云函数中在单个请求中读取多个用户id的数据

Node.js 如何在firebase上的云函数中在单个请求中读取多个用户id的数据,node.js,firebase,firebase-realtime-database,firebase-admin,Node.js,Firebase,Firebase Realtime Database,Firebase Admin,我将Firebase数据库用于我的Android应用程序和云功能。因为Firebase以JSON格式存储数据。每个用户都有一些分配给用户的唯一id 我想知道是否有任何方法可以在一个请求中获取多个用户的数据。如果您看到下面的代码,它将只获取传递的用户id的数据 db .ref("/users/" + request.query.userId) .once("value") .then(function(snapshot) { 我有10个用户ID,我想在nodejs中获取单

我将Firebase数据库用于我的Android应用程序和云功能。因为Firebase以JSON格式存储数据。每个用户都有一些分配给用户的唯一id

我想知道是否有任何方法可以在一个请求中获取多个用户的数据。如果您看到下面的代码,它将只获取传递的用户id的数据

db
    .ref("/users/" + request.query.userId)
    .once("value")
    .then(function(snapshot) {

我有10个用户ID,我想在nodejs中获取单个请求的数据。获取此信息的方法是什么?

将它们存储在如下数组中:

var promArr = []
var snapshotData = []
promArr.push(
db
    .ref("/users/" + request.query.userId) //put here unique usernames
    .once("value")
    .then(function(snapshot) {
    snapshotData.push(snapshot.val())
    })
return Promise.all(promArr).then(snap =>  {
//loop through snapshotData here
})

将它们存储在如下数组中:

var promArr = []
var snapshotData = []
promArr.push(
db
    .ref("/users/" + request.query.userId) //put here unique usernames
    .once("value")
    .then(function(snapshot) {
    snapshotData.push(snapshot.val())
    })
return Promise.all(promArr).then(snap =>  {
//loop through snapshotData here
})

这可以写得更清楚:

const records = [
  admin.database().ref(`users/${userId1}`).once('value'),
  admin.database().ref(`users/${userId2}`).once('value'),
];

return Promise.all(records).then(snapshots => {
   const record1 = snapshots[0].val();
   const record2 = snapshots[1].val();
});

这可以写得更清楚:

const records = [
  admin.database().ref(`users/${userId1}`).once('value'),
  admin.database().ref(`users/${userId2}`).once('value'),
];

return Promise.all(records).then(snapshots => {
   const record1 = snapshots[0].val();
   const record2 = snapshots[1].val();
});

@Williams:这确实是一种常见的方法,并不像你想象的那么慢,因为Firebase通过单个连接来处理请求。关于这一点的解释,请参见我的回答@FrankvanPuffelen谢谢,你的帖子真的很有帮助:)@Williams:这确实是一种常见的方法,并不像你想象的那么慢,因为Firebase通过单个连接来处理请求。关于这一点的解释,请参见我的答案@FrankvanPuffelen谢谢,你的帖子真的很有帮助:)