后端(nodejs)
async getAllEvents(req, res, database, collection) {
try {
const { filter, sort } = req.query;
const events = await mongo
.getClient()
.db(database)
.collection(collection)
.find(filter)
.sort(sort)
.toArray();
res.json(events);
res.end();
} catch (error) {
return res.status(400).json({ message: "err_get_events" });
}
}
字符串
前端(React)
const getAllEvents = async () => {
const query = settings.query;
await axios
.get(Constants.BASE_URL + '/' + settings.urlprefix + '/get', { params: { filter: { helped: true }, sort: { dateAdded: -1 } } })
.then((res) => {
setEvents(res.data);
})
.catch((err) => console.log(err?.response?.data?.message));
};
型
我从console.log中获取的后端:{ filter: { helped: 'true' }, sort: { dateAdded: '-1' } }
和helped
和sort
成为字符串
当我把{ helped: 'true' }
传递给mongo时,find()没有给予任何结果,因为在mongo中我存储的是布尔值。
查询解析后,如何在后端得到正确的变量类型?
2条答案
按热度按时间lmvvr0a81#
boolean在发送到mongo之前很久就变成了一个字符串。HTTP是一个基于文本的协议,无论你在URL中发送的GET参数是一个字符串,它的服务器的责任是将其转换为适当的数据类型。
请阅读How can I convert a string to boolean in JavaScript?的灵感如何做转换适合您的用例。
y1aodyip2#
最初,我想使用一个NPM包来转换所有接收到的json,使其自动化,并避免未来对后端代码的任何关注。但显然我没有耐心在这个问题上纠缠下去。我提出了临时解决方案:
字符串