Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Firebase React:如何渲染当前用户?_Reactjs_Firebase_Google Cloud Firestore - Fatal编程技术网

Reactjs Firebase React:如何渲染当前用户?

Reactjs Firebase React:如何渲染当前用户?,reactjs,firebase,google-cloud-firestore,Reactjs,Firebase,Google Cloud Firestore,我想将一段特定的用户数据呈现给react组件。当用户注册时,他们提交其场馆的名称,该名称保存到venueName变量中。我想提取这个属性,然后在GigRegister组件上渲染它。对如何提取这些信息有什么建议吗 这是注册路线 app.post('/registerVenue',(req,res) =>{ const newVenue = { email: req.body.email, password: req.body.password,

我想将一段特定的用户数据呈现给react组件。当用户注册时,他们提交其场馆的名称,该名称保存到
venueName
变量中。我想提取这个属性,然后在
GigRegister
组件上渲染它。对如何提取这些信息有什么建议吗

这是注册路线

app.post('/registerVenue',(req,res) =>{
    const newVenue = {
        email: req.body.email,
        password: req.body.password,
        confirmPassword: req.body.confirmPassword,
        venueName: req.body.venueName,
        venueAddress: req.body.venueAddress
    }

    let errors = {}

    if(isEmpty(newVenue.email)){
        errors.email = 'Email must not be empty'
    }else if (!isEmail(newVenue.email)){
        errors.email = 'must be a valid email address'
    }

    if(Object.keys(errors).length >0){
        return res.status(400).json(errors)
    }

    let token, userId
    db.doc(`/user/${newVenue.venueName}`).get()
    .then(doc => {
        if(doc.exists){
            return res.status(400).json({venueName: `This venue name is already taken`})
        } else {
            return firebase
            .auth()
            .createUserWithEmailAndPassword(newVenue.email, newVenue.password)
        }
    })
    .then(data=> {
        userId = data.user.uid;
        return data.user.getIdToken()
    })
    .then(idToken => {
        token = idToken
        const venueDetails ={
            email: newVenue.email,
            venueName: newVenue.venueName,
            venueAddress: newVenue.venueAddress,
            createdAt: new Date().toISOString(),
            userId
        }
        return db.doc(`/users/${newVenue.venueName}`).set(venueDetails)
    })
    .then(() => {
        return res.status(201).json({token})
    })
    .catch(err => {
        console.error(err)
        if(err.code === 'auth/email-already-in-use'){
            return res.status(400).json({email: 'Email is already in use'})
        } else {
            return res.status(500).json({error:err.code})
        }
    })
})
这是Gig注册路线(登录用户可以在这里发布基于文本的信息)

最后,这里是我要渲染到的组件:

import React from "react";
    import Header from "./Header";
    import TextField from "@material-ui/core/TextField";
    import Button from "@material-ui/core/Button";
    import axios from "axios";
    import * as firebase from 'firebase'
    import { auth } from 'firebase/app'
    
    class GigRegister extends React.Component {
      constructor() {
        super();
        this.state = {
          name: "",
          venue: "",
          time: "",
          date: "",
          genre: "",
          tickets: "",
          price: "",
        };
        this.handleSubmit = this.handleSubmit.bind(this);
        this.handleChange = this.handleChange.bind(this);
      }
    
      handleChange(e) {
        this.setState({
          [e.target.name]: e.target.value,
        });
      }
    
      handleSubmit(e) {
        console.log("submit function reached");
        e.preventDefault();
        const gigData = {
          name: this.state.name,
          venue: this.state.venue,
          time: this.state.time,
          date: this.state.date,
          genre: this.state.genre,
          tickets: this.state.tickets,
          price: this.state.price,
        };
        
        
        auth().currentUser.getIdToken().then(function(token) {
          axios("http://localhost:5000/gig-fort/us-central1/api/createGigListing", {
            method: "POST",
            headers: {
              "content-type": "application/json",
              "Authorization": "Bearer "+token,
            },
            data: gigData,
          })
      })
          .then((res) => {
            console.log(res);
            this.props.history.push('/Homepage')
          })
          .catch((err) => {
            console.error(err);
          });
      }
    
    
    
      render() {

        return (
          <div className="gig-register">
            <Header />
            <h1 className="header-gigReg">Register a gig</h1>
            <form onSubmit={this.handleSubmit}>
              <TextField
                placeholder="Event name"
                defaultValue="Event name"
                id="name"
                name="name"
                onChange={this.handleChange}
              />
              <TextField
                placeholder="Venue"
                defaultValue="Venue"
                id="venue"
                name="venue"
                onChange={this.handleChange}
              />
              <TextField
                placeholder="Time"
                defaultValue="Time"
                type="time"
                label="Enter start time"
                id="time"
                name="time"
                InputLabelProps={{
                  shrink: true,
                }}
                inputProps={{
                  step: 300, // 5 min
                }}
                onChange={this.handleChange}
              />
              <TextField
                id="date"
                label="Select date"
                type="date"
                defaultValue="2017-05-24"
                InputLabelProps={{
                  shrink: true,
                }}
                onChange={(e) => {
                  this.setState({ date: e.target.value });
                }}
              />
              <TextField
                placeholder="Genre"
                defaultValue="Genre"
                id="genre"
                name="genre"
                onChange={this.handleChange}
              />
              <TextField
                placeholder="Tickets"
                defaultValue="Tickets"
                id="tickets"
                name="tickets"
                onChange={this.handleChange}
              />
              <TextField
                placeholder="Price"
                defaultValue="Price"
                id="price"
                name="price"
                onChange={this.handleChange}
              />
              <Button type="submit">Submit</Button>
            </form>
          </div>
        );
      }
    }
    
    export default GigRegister
从“React”导入React;
从“/Header”导入标题;
从“@material ui/core/TextField”导入TextField;
从“@物料界面/核心/按钮”导入按钮;
从“axios”导入axios;
从“firebase”导入*作为firebase
从“firebase/app”导入{auth}
类GigRegister扩展了React.Component{
构造函数(){
超级();
此.state={
姓名:“,
地点:“,
时间:“,
日期:“,
体裁:“,
门票:“,
价格:“,
};
this.handleSubmit=this.handleSubmit.bind(this);
this.handleChange=this.handleChange.bind(this);
}
手变(e){
这是我的国家({
[e.target.name]:e.target.value,
});
}
handleSubmit(e){
console.log(“已达到提交功能”);
e、 预防默认值();
常量数据={
名称:this.state.name,
地点:这个州,地点,
时间:这个州,时间,
日期:this.state.date,
类型:this.state.genre,
票:这个州的票,
普莱斯:这个州普莱斯,
};
auth().currentUser.getIdToken().then(函数(令牌){
axios(“http://localhost:5000/gig-fort/us-central1/api/createGigListing“{
方法:“张贴”,
标题:{
“内容类型”:“应用程序/json”,
“授权”:“持票人”+代币,
},
数据:gigData,
})
})
。然后((res)=>{
控制台日志(res);
this.props.history.push(“/Homepage”)
})
.catch((错误)=>{
控制台错误(err);
});
}
render(){
返回(
登记演出
{
this.setState({date:e.target.value});
}}
/>
提交
);
}
}
导出默认寄存器

您是否试图根据用户刚刚提供的内容呈现firestore上存储的内容?
import React from "react";
    import Header from "./Header";
    import TextField from "@material-ui/core/TextField";
    import Button from "@material-ui/core/Button";
    import axios from "axios";
    import * as firebase from 'firebase'
    import { auth } from 'firebase/app'
    
    class GigRegister extends React.Component {
      constructor() {
        super();
        this.state = {
          name: "",
          venue: "",
          time: "",
          date: "",
          genre: "",
          tickets: "",
          price: "",
        };
        this.handleSubmit = this.handleSubmit.bind(this);
        this.handleChange = this.handleChange.bind(this);
      }
    
      handleChange(e) {
        this.setState({
          [e.target.name]: e.target.value,
        });
      }
    
      handleSubmit(e) {
        console.log("submit function reached");
        e.preventDefault();
        const gigData = {
          name: this.state.name,
          venue: this.state.venue,
          time: this.state.time,
          date: this.state.date,
          genre: this.state.genre,
          tickets: this.state.tickets,
          price: this.state.price,
        };
        
        
        auth().currentUser.getIdToken().then(function(token) {
          axios("http://localhost:5000/gig-fort/us-central1/api/createGigListing", {
            method: "POST",
            headers: {
              "content-type": "application/json",
              "Authorization": "Bearer "+token,
            },
            data: gigData,
          })
      })
          .then((res) => {
            console.log(res);
            this.props.history.push('/Homepage')
          })
          .catch((err) => {
            console.error(err);
          });
      }
    
    
    
      render() {

        return (
          <div className="gig-register">
            <Header />
            <h1 className="header-gigReg">Register a gig</h1>
            <form onSubmit={this.handleSubmit}>
              <TextField
                placeholder="Event name"
                defaultValue="Event name"
                id="name"
                name="name"
                onChange={this.handleChange}
              />
              <TextField
                placeholder="Venue"
                defaultValue="Venue"
                id="venue"
                name="venue"
                onChange={this.handleChange}
              />
              <TextField
                placeholder="Time"
                defaultValue="Time"
                type="time"
                label="Enter start time"
                id="time"
                name="time"
                InputLabelProps={{
                  shrink: true,
                }}
                inputProps={{
                  step: 300, // 5 min
                }}
                onChange={this.handleChange}
              />
              <TextField
                id="date"
                label="Select date"
                type="date"
                defaultValue="2017-05-24"
                InputLabelProps={{
                  shrink: true,
                }}
                onChange={(e) => {
                  this.setState({ date: e.target.value });
                }}
              />
              <TextField
                placeholder="Genre"
                defaultValue="Genre"
                id="genre"
                name="genre"
                onChange={this.handleChange}
              />
              <TextField
                placeholder="Tickets"
                defaultValue="Tickets"
                id="tickets"
                name="tickets"
                onChange={this.handleChange}
              />
              <TextField
                placeholder="Price"
                defaultValue="Price"
                id="price"
                name="price"
                onChange={this.handleChange}
              />
              <Button type="submit">Submit</Button>
            </form>
          </div>
        );
      }
    }
    
    export default GigRegister