Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 Cloud Firestore节点SDK-transaction.getAll不是函数_Node.js_Firebase_Google Cloud Firestore_Firebase Admin - Fatal编程技术网

Node.js Cloud Firestore节点SDK-transaction.getAll不是函数

Node.js Cloud Firestore节点SDK-transaction.getAll不是函数,node.js,firebase,google-cloud-firestore,firebase-admin,Node.js,Firebase,Google Cloud Firestore,Firebase Admin,transaction.getAll方法不能像其他方法那样工作。我已经复制并粘贴了给定示例中的代码,但由于出现错误而失败 Transaction.getAll 从Firestore检索多个文档。对所有返回的文档持有悲观锁 错误 我的代码 这是直接从文档中复制的,并添加了初始化标题 const firebase = require('firebase-admin'); var serviceAccount = process.env.MY_CREDENTIALS; firebase.initi

transaction.getAll方法不能像其他方法那样工作。我已经复制并粘贴了给定示例中的代码,但由于出现错误而失败

Transaction.getAll 从Firestore检索多个文档。对所有返回的文档持有悲观锁

错误 我的代码 这是直接从文档中复制的,并添加了初始化标题

const firebase = require('firebase-admin');

var serviceAccount = process.env.MY_CREDENTIALS;

firebase.initializeApp({
    credential: firebase.credential.cert(JSON.parse(serviceAccount))
});

const firestore = firebase.firestore();

let firstDoc = firestore.doc('col/doc1');
let secondDoc = firestore.doc('col/doc2');
let resultDoc = firestore.doc('col/doc2');

firestore.runTransaction(transaction => {
  return transaction.getAll(firstDoc, secondDoc).then(docs => {
    transaction.set(resultDoc, {
      sum: docs[1].get('count') + docs[2].get('count')
    });
  });
});
自Firebase Admin Node.js SDK 5.9.1发布以来的更新 这支持Firestore Node.js客户端的v12,其中包括transaction.getAll的提交

测试 我从package.json中删除了node_modules目录和所有依赖项,然后运行以下程序

包装安装 测试代码 固定的
transaction.getAll
已添加到v0.12。此更新的x已添加到

但是,文档中的示例代码不正确。应将以下行更改为:

sum: docs[0].get('count') + docs[1].get('count')

以前,它引用了不存在的
doc[2]
,这看起来像是一个bug,无论是在文档中还是在实现中。请随意提交一个bug。我已经向团队内部提交了一份。谢谢你确认,道格。我提出了一张支持票。由于这是一个bug,而不是一个编码查询,我应该删除这个SO问题吗?不,在问题解决之前,其他人可能会有这个问题。然后他们就会知道该怎么做。修复后,您的问题会有一个最终答案。我认为这在最新的Firestore客户端中已修复:。AdminSDK将从下一版本开始使用此版本。谢谢,Hiranya。Firebase Admin Node.js SDK版本5.9.1(2018年2月28日发布)将云Firestore客户端升级至0.12.0。我会测试一下,然后再报告
$ npm install --save firebase-admin@5.9.1

> grpc@1.7.3 install /home/jason/Downloads/projects/testing/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

[grpc] Success: "/home/jason/Downloads/projects/testing/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node" is installed via remote

> protobufjs@6.8.6 postinstall /home/jason/Downloads/projects/testing/node_modules/google-gax/node_modules/protobufjs
> node scripts/postinstall


> protobufjs@6.8.6 postinstall /home/jason/Downloads/projects/testing/node_modules/google-proto-files/node_modules/protobufjs
> node scripts/postinstall

npm WARN testing@1.0.0 No description
npm WARN testing@1.0.0 No repository field.

+ firebase-admin@5.9.1
added 358 packages in 42.265s
(xenial)jason@localhost:~/Downloads/projects/testing$ node testTransactionGetAll.js 
(node:22273) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'get' of undefined
(node:22273) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
sum: docs[0].get('count') + docs[1].get('count')