Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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
Javascript CastError:值转换为字符串失败(Mongoose,React js)_Javascript_Node.js_Mongoose - Fatal编程技术网

Javascript CastError:值转换为字符串失败(Mongoose,React js)

Javascript CastError:值转换为字符串失败(Mongoose,React js),javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我收到一封来自lstate的电子邮件,状态为useReducer。我通过使用Context-api和useContext获取lstate值。但我的问题是,我使用fetch api将lstate传输到我的后端auth.js,以从MongoDB获取所需电子邮件的文档。但我并没有收到来自后端lstate的电子邮件,我收到的是对象 Account.jsx const Account = () => { const { lstate } = useContext(LoginContext)

我收到一封来自lstate的电子邮件,状态为useReducer。我通过使用Context-apiuseContext获取lstate值。但我的问题是,我使用fetch api将lstate传输到我的后端auth.js,以从MongoDB获取所需电子邮件的文档。但我并没有收到来自后端lstate的电子邮件,我收到的是对象

Account.jsx

const Account = () => {

    const { lstate } = useContext(LoginContext);

    const LoginData = async () => {

        console.log(`my lstate in login function ${lstate}`);  

        await fetch('/account', {
            method: 'POST',
            headers: {
                "Content-Type": "application/json"
            },
            body: JSON.stringify({
                lstate           
             })
        }).then((res) => {
            console.log(res);
        }).catch((err) => {
            console.log(err);
        })
    }


    useEffect(() => {
        LoginData();
    }, []);
auth.js

router.post('/account', async (req, res) => {

    try {
        

        const email = req.body;

        console.log(`data from account ${email}`);

        const data = await CustomerModel.findOne({ email: email });

        if (data) {

            return res.json(data);
        }
        
    } catch (error) {
        
        console.log(error);
    }

})
控制台错误

data from account [object Object]  
CastError: Cast to string failed for value "{ lstate: 'usman4276@gmail.com' }" at path "email" for model "Customer_reg"
    at model.Query.exec (C:\MERN stack\online-cattle-shop\backend\node_modules\mongoose\lib\query.js:4408:21)
    at model.Query.Query.then (C:\MERN stack\online-cattle-shop\backend\node_modules\mongoose\lib\query.jsbackend\node_modules\mongoose\lib\query.js:4502:15)
    at processTicksAndRejections (internal/process/task_queues.js:93:5) {
  messageFormat: undefined,
  stringValue: `"{ lstate: 'usman4276@gmail.com' }"`,  kind: 'string',
  value: { lstate: 'usman4276@gmail.com' },
  path: 'email',
  reason: null
}
应该是

const { email } = req.body;

您还应该添加条件检查

例如


客户端中的代码正在发送一个JSON,键
lstate
包含实际的邮件

你需要做什么

const email = req.body.email.lstate;

const data = await CustomerModel.findOne({ email });


这非常适合我const email=req.body.lstate;
if (!email) throw new Error ('Email Required')
const email = req.body.email.lstate;

const data = await CustomerModel.findOne({ email });