检索用户ID时出错

时间:2018-08-13 18:58:35

标签: node.js mongodb reactjs express mongoose

我的应用程序基本上可以让您放置照片链接并检测人物的脸部。 所以这是交易,我正在与MERN一起开发,除了这部分以外,其他所有功能都在起作用:

app.put('/image', (req, res) => {
 const { id } = req.body;

User.findByIdAndUpdate(id, {$inc : { 'entries': 1}})
console.log(id);
     .then(user => {
         return res.json(user.entries);
    })
    .catch(err => {
        res.status(400).json('Error getting entries');
        console.log(err);
    })      
});

在console.log上,它基本上说出'id',因此'user'是未定义的。当我尝试邮递员直接发送ID时,它可以正常工作,但我不知道为什么它返回的是undefined。我猜这是前端上的某个东西,无法获取用户ID并发送到后端。

这是onSubmit函数:

    onButtonSubmit = () => {
  this.setState({imageUrl: this.state.input});
    app.models
      .predict(
        Clarifai.FACE_DETECT_MODEL, 
        this.state.input)
    .then(response => {
      if (response) {
        fetch('http://localhost:3000/image', {
            method: 'put',
            headers: {'Content-Type': 'application/json' },
            body: JSON.stringify({
        id: this.state.user.id
            })
    })
      .then(response => response.json())
      .then(count => {
        this.setState(this.setState(Object.assign(this.state.user, {entries: count})))
      })
    } 
    this.displayFaceBox(this.calculateFaceLocation(response))
    })
}

这是Rank组件,用来显示一个条目的数量。

const Rank = ({ name, entries }) => {
    return (
        <div>
            <div className='f3'>
                {`${name} , your current entry count is...`}
            </div>
            <div className='white f1'>
                {entries}
            </div>
        </div>
        );
};

如果有人可以帮助我,那就太好了!

2 个答案:

答案 0 :(得分:0)

如果请求正在处理错误,则应该是您将对象转换为字符串客户端,而忘记了解析服务器端。

body: JSON.stringify({
           id: this.state.user.id
})

在服务器端,您应该解析主体以将其转换回对象

const data = JSON.parse(req.body) const id = data.id

答案 1 :(得分:0)

我找到了答案。原来是函数loadUser(我没有在这里发布)。我忘记将id: user.id的{​​{1}}更改为

非常感谢!