我一直在努力解决一个简单的用例:在Firebase数据库的React网络应用上读取一个数字,即已注册的用户数,并在加载页面时显示。
有旧版本的React和Firebase的文档,但似乎这个用例应该是新的方式。
Screenshot of my Firebase Database.
import React from 'react'
import {Badge} from 'react-bootstrap'
var firebase = require('firebase')
var config = {
apiKey: "MyKey", // redacted key
authDomain: "dnavid-c48b6.firebaseapp.com",
databaseURL: "https://dnavid-c48b6.firebaseio.com",
storageBucket: "dnavid-c48b6.appspot.com",
};
var firebaseApp = firebase.initializeApp(config);
var UCRef = firebaseApp.database().ref("numberofusers")
class UserCount extends React.Component{
constructor(props){
super(props)
this.state = {usercount: '3'}
}
componentDidMount() {
// this.setState({usercount:4}) // This actually works and displays "4"
var uc = UCRef.on('value',function(snapshot){return(snapshot.val())})
debugger;
this.setState({usercount:uc}) // This does not work
}
render(){
return (
<Badge>
{this.state.usercount}
</Badge>
)
}
}
export default UserCount;
在Chrome调试器中(注意“调试器”命令)我进入控制台:
> uc
<. function(snapshot) {
return snapshot.val();
}
和
> uc()
Uncaught TypeError: Cannot read property 'val' of undefined(…)
我将从中推断出由于未定义快照,因此尚未触发事件。但这听起来不合逻辑:
价值事件 您可以使用value事件来读取内容的静态快照 在特定路径上,因为它们在事件发生时存在。这种方法 每次连接监听器时都会触发一次 包括儿童在内的数据发生了变化。事件回调传递了一个 包含该位置所有数据的快照,包括子数据。 如果没有数据,则返回的快照为空。
那么,听众是不是被附加了?发生了什么事?
答案 0 :(得分:6)
你需要这样做:
Select *,RowNr=Concat('ICD',Row_Number() over (Partition By ClaimID Order By ClaimID)) from YourTable
CLAIMID CODENUMBER RowNr
2 465.90 ICD1
2 238.80 ICD2
2 461.90 ICD3
2 786.20 ICD4
不会为您返回值。你可以在回调中获取它