不返回node.js中的firestore数据库函数

时间:2018-06-01 13:29:19

标签: node.js firebase google-cloud-firestore google-cloud-functions

这是从云功能获取密钥的请求。我在控制台中收到密钥,但它没有返回我存储值的firestore数据库。

这是我的代码:

return request(options, function (error, response, body){
  tokenName = body.notification_key;
  console.log('Key: ' + tokenName);       //gives me the key successfully
  return Promise.all([tokenName]).then(() =>{  //this code doesn't run in the firestore functions console. 
    console.log('key name: ' + tokenName);
    return db.collection('Users').doc(user_id).set({name: name1,token_id: token_id1,notification_key: tokenName,image: image,email: token_email}).then(() => {
      return console.log("Document successfully written!");       
    })
    .catch(function(error) {
      return console.error("Error writing document: ", error);
    });
  });
});

enter image description here

1 个答案:

答案 0 :(得分:0)

您的代码可以更简单:

return request(options, function (error, response, body){
  tokenName = body.notification_key;
  console.log('Key: ' + tokenName);
  return db.collection('Users').doc(user_id).set({name: name1,token_id: token_id1,notification_key: tokenName,image: image,email: token_email}).then(() => {
    return console.log("Document successfully written!");       
  })
  .catch(function(error) {
    return console.error("Error writing document: ", error);
  });
});

但是仍然没有在响应中写出结果,但是很难确定结果与您共享的结果有什么关系。

我不确定你为什么要在这里使用Promise.all()。我强烈建议您在继续之前阅读一些有关承诺的教程。这个blog post explains the basicsthis video explains promisesthis video一样。