我有一个相关的问题(请参阅最后的链接)使用带有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”,但不解释如何。
答案 0 :(得分:1)
我终于找到了解决方案:
x.then((value) => {
console.log("Retrieved: ", value);
this.myService.ID = value;
});