我知道如何用%20替换“”(空格)的问题已在SO上提出,但我需要知道可以在哪里实现-我正在使用React Native前端和NodeJS(ExpressJS)作为后端连接到PostgreSQL DB。
是否可以使用bodyparser urlencoded
实现这一目标?我只需要1或2个查询中的所有内容就可以了。
我的前端部分:(在componentDidMount上调用)
getData("username") .then(data => data) .then(value => { this.setState({username: value}) fetch(`http://xxx.xxx.xx.xx:6969/api/hours/unlock/'${value}'`) // replace " " mit %20 ?!?!?! .then(res => res.json()) .then(result => { console.log("** UuNamMe **" + this.state.username) console.log("Res from UnlockTabelle : " + result) console.log("Res from UnlockTabelle[0] : " + result[0]) }) .catch(err => console.log("ErrorLog: @unlock : " + err)) }) .catch(err => console.log(err))
我的后端部分:
static unlockUser(username, callback) { db.query(`SELECT * FROM unlock WHERE name = '${username}'`, (err, res) => { if (err.error) { callback(err); } callback(res); }); } static lockUser(username, callback) { db.query(`DELETE FROM unlock WHERE name = '${username}'`, (err, res) => { if (err.error) { callback(err); } callback(res); }); }
router.get("/unlock/:username", (req,res) => { const username = req.params.username Hours.unlockUser(username, (err, result) => { if(err) { return res.json(err) } return res.json(result) }) }) router.delete("/lock/:username" , (req, res) => { const username = req.params.username Hours.lockUser(username, (err, result) => { if(err) { return res.json(err) } return res.json(result) }) })
如果我想将URL编码为用%20替换“”,在哪里发生?在我的bodyparser后端或前端(如果有的话)会是什么样子?
我知道在SO上已经问过有关如何用%20替换“”(空格)的问题,但我需要知道在哪里可以实现它-我使用React Native作为前端,并使用NodeJS(ExpressJS)作为我的前端...
您可以在前端使用encodeURIComponent
:
fetch(`http://xxx.xxx.xx.xx:6969/api/hours/unlock/'${encodeURIComponent(value)}'`)
或者,您可以将相关的headers
添加到如下的fetch
语句中,
[好吧,我刚刚注意到,如果我从' '
中删除'${value}'
,它实际上可以工作-检查空格并替换它们还是更好,因为这似乎是自动发生的。