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