我正在开发一个包含用户客户端的应用程序,该客户端可以添加到表格视图中。我想访问客户端的Firebase数据库,以便可以在表视图中将每个客户端显示为单独的单元格。 screen cap of firebase
因此,在此示例中,我想取出名称“ Tyler Huan”和“ Johnny Sherman”以将它们附加到数组中,然后将它们放入我的表格视图中。如果我尝试通过以下方式以编程方式撤回客户财产:
ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
Database.database().reference().child("users").child(userID!).observeSingleEvent(of: .value) { (snapshot) in
print(snapshot)
if let clients = snapshot.value as? [String: AnyObject] {
if let clients2 = clients["Clients"] as? [String]{
print(clients)
print("this \(clients2)")
}
}
}
它不能只删除名称,因为在这些名称下也是客户端属性。
感谢所有帮助,谢谢!
答案 0 :(得分:1)
如果只需要客户列表,则仅对客户列表使用引用,而不是对用户下所有信息的引用。在这种情况下,它将是 export class NationalitySelect extends Component {
state = { showFormInput: false };
onSelect = (value) => {
if (value === 'OT') {
this.setState({ showFormInput: true });
} else {
this.setState({ showFormInput: false });
}
};
render() {
const { decorator } = this.props;
const { showFormInput } = this.state;
return (
<FormItem {...layout} label="Nationality" colon required>
<Col span={7}>
<FormItem>
{decorator('nationality', { initialValue: 'JP' })(
<FormSelect onChange={value => this.onSelect(value)}>
<Option value="JP">Japanese</Option>
<Option value="SG">Singaporean</Option>
<Option value="OT">Others</Option>
</FormSelect>,
)}
</FormItem>
</Col>
{/* show text input if nationality is others */}
{showFormInput && (
<Col span={17}>
<FormItem>
{decorator('otherNationality', {
rules: [
{
required: true,
message: 'Please specify your nationality!',
},
],
})(<FormInput type="text" />)}
</FormItem>
</Col>
)}
</FormItem>
);
}
}
。请记住,构建数据结构是一个好主意,这样您就可以在任何给定时间只下载所需的信息。调用ref.child("users/(userID!)/Clients")
时,无论您是否需要,该参考下的所有数据都会下载。给定您当前的数据结构,这就是获取名称的方法:
observeSingleEvent
您可以在Firebase guide中查看示例。 但是话又说回来,如果有时候您需要客户名称而不是他们的公司,那么您可能想使用非规范化尝试其他结构。例如:
ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
ref.child("users/(userID!)/Clients").observeSingleEvent(of: .value) { snapshot in
for child in snapshot.children {
print(child.key)
}
}
以上结构假设您一天将需要为每个客户提供更多数据。它使您可以在需要时仅查询名称,而不查询整个配置文件。但是,如果您只需要他们的公司名称而没有配置文件,则可以将其作为值并将其名称作为键:
users: {
uid1: {
clientNames: {
Johnny Sherman: true,
Tyler Huan: true,
//...
}
clientProfiles: {
Johnny Sherman: {
Company: "Apple",
Phone: 8675309,
Address: "Funkytown",
//...
}
Tyler Huan: {
Company: "Microsoft",
Phone: 0118999881999199725...3,
Address: "Sesame Street",
},
//...
}
}
}
只需几个建议,以便更轻松地查询向前的数据!