Firestore在函数外部获取ref.id

时间:2018-01-22 21:07:04

标签: javascript promise observable google-cloud-firestore

我有一个相关的问题(请参阅最后的链接)使用带有Angular 5的Firestore:

    db.collection('posts')
     .add({title: 'Hello World'})
     .then(function(docRef) {
       console.log('The auto-generated ID is', docRef.id)
       postKey = docRef.id
    });

这在我的代码中不起作用!我可以在console.log()中看到正确的docRef.id,但是当我将{{postKey}}添加到html文件时,无法在函数外部访问postKey - 我做错了什么? = /

我尝试了以下内容:

myFunction(a, b) {

    var postKey: string = "waiting";
    console.log(postKey);

    let x = this.db.collection('mydocs').add({
      a: a,
      b: b
    }).then(function(docRef) {
      console.log(docRef.id);
      postKey = JSON.stringify(docRef.id);
      return postKey;
    }).catch(function (error) {
      console.error("Error creating document: ", error);
    });

    console.log(postKey);
    this.x = postKey;
    console.log(x);
  };

但是我要么得到一个空的observable,要么根本无法访问该变量。 在这种情况下,x是一个可观察的,但我不知何故需要提取项目docRef.id - 只需使用

this.myNeededDocrefId = x.docRef.id不起作用!

相关问题:Can I get the generated ID for a document created with batch().set using Firestore?

问题的作者说“你可以很容易地获得id”,但不解释如何。

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案:

x.then((value) => {
      console.log("Retrieved: ", value);
      this.myService.ID = value;
    });