发生推送事件时,它将返回一个新密钥。Firebase:在成功回调中使用新创建的密钥
例如从Docs:
// Generate a reference to a new location and add some data using push()
var newPostRef = postsRef.push();
// Get the unique ID generated by push()
var postID = newPostRef.key();
我想要做的事:
现在我想以后直接使用此键,以便在另一部分实现变革数据库。
但由于JavaScript的异步性,我一直在绊倒。
我已经试过成功回调:
var newMessageIDRef = firebaseMessagesRef.push({
authorName: 'Nick',
text:"Hello!"
},printKey(newMessageIDRef));
var printKey = function(newMessageIDRef) {
console.log(newMessageIDRef);//undefined
}
(我认为设置newMessageIDRef之前printKey
被调用)
我使用 “然后” 尝试:
var newMessageIDRef = firebaseConvosRef.push({
authorName: 'Nick',
text:"Hello!",
}).then(printKey(newMessageIDRef));
var printKey = function(newMessageIDRef) {
console.log(newMessageIDRef);//undefined
}
(我认为parens导致printKey
立即执行,这让我想知道如何添加params但不会导致早期执行)
问:
是否有处理一些事情常规的方式很常见或者是我最好的解决方案使用Promise
和处理与resolve
的关键?
更新(没有回答尚未虽然):
下面是工作,但它没有任何意义。
var printKey = function(newMessageIDRef) {
console.log(newMessageIDRef);//undefined
}
var newMessageIDRef = firebaseConvosRef.push({
authorName: 'Nick',
text:"Hello!",
});
printKey(newMessageIDRef)
我认为newMessageIDRef
不一定会由时间printKey
叫回来。
为什么你要记录一个字符串而不是变量? – Bergi
@Bergi,这只是一个意外,使片段,感谢指出! –