Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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
Node.js MERN堆栈:用户ID在POST时返回null_Node.js_Reactjs_Express_Mongoose Schema_Mern - Fatal编程技术网

Node.js MERN堆栈:用户ID在POST时返回null

Node.js MERN堆栈:用户ID在POST时返回null,node.js,reactjs,express,mongoose-schema,mern,Node.js,Reactjs,Express,Mongoose Schema,Mern,我正在开发一个应用程序,它使用带有passport JS的MERN堆栈进行身份验证 应用程序的ERD如下所示: user site (belongs to user) page (belongs to site) 我能够注册、登录并获得用户id和返回的令牌: * {_id: "5db9760b7ba2c21e9a2659f3", email: “test@gmail.com", token: "eyJhbGciOiJIUzI1NiIsInR5cCI6Ik

我正在开发一个应用程序,它使用带有passport JS的MERN堆栈进行身份验证

应用程序的ERD如下所示:

user
site (belongs to user)
page (belongs to site)
我能够注册、登录并获得用户id和返回的令牌:

* {_id: "5db9760b7ba2c21e9a2659f3", email: “test@gmail.com", token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"}
    * email: “test@gmail.com"
token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
_id: "5db9760b7ba2c21e9a2659f3"
__proto__: Object

令牌保存在本地存储器中

现在,我正试图通过创建一个站点来实现ERD的下一步。但是,当我尝试对站点发出
POST
请求时,我得到的用户ID返回未定义:

POST http://localhost:3000/api/users/undefined/sites/ 404 (Not Found)
在终端中,我得到以下错误:

(节点:24299)未处理的PromisejectionWarning:CastError:Cast to ObjectId在模型“用户”的路径“\u id”处的值“current”失败。

快车 REACT(api helper.js) REACT(App.js)
由于有一个令牌返回并保存到本地存储,我无法理解为什么用户id返回为未定义。

您的loginUser方法需要一个参数(loginData),但您调用它的方式如下:const user=wait loginUser();我还认为api.post(
${user\u id}=>必须是api.post(
/${user\u id})
//Create Site
router.post('/:user_id/sites/:site_id/pages', function (req, res, next) {
  const saveData = {
    userId: req.params.user_id,
    siteId: req.params.site_id,
    content: req.body.page.content
  };
  const condition = {
    userId: req.params.user_id,
    siteId: req.params.site_id
  };

  console.log(saveData);

  Content.exists(condition)
    .then((data) => {
      if (data == false) {
        Content.create(saveData)
          .then((data) => {
            res.send(data);
          });
      }
    })

})

// LOGIN USER
export const loginUser = async (loginData) => {
  const resp = await api.post('/login', { user: loginData });
  const token = resp.data.user.token;
  storeToken(token);
  return (resp)
}

//POST - CREATE SITE
export const newUserSite = async (user_id, data) => {
  getToken();
  const resp = await api.post(`${user_id}/sites`, { site: data });
  return (resp.data);
}
  async componentDidMount() {
    const user = await loginUser();
    this.getUserSites();
    const allUserSites = await getUserSites();
    this.setState({
      users: user,
    });
    console.log(allUserSites);
  };


//Create Site
  newSite = async (e) => {
    e.preventDefault();
    const userID = this.state.users.id;
    const site = await newUserSite(userID, this.state.formData);
    this.setState(prevState => ({
      sites: [...prevState.sites, site],
      currentSiteId: site.id,
    }))
    this.props.history.push("/edit")
  }