我正在尝试使用Nuxt中的express和axios处理动态段塞,例如:mydomain.com/foo
。
如果它们是整数(/ 1,/ 2,/ 3等),我之前使用动态段塞工作但是当我尝试采用相同的逻辑并将其与json对象匹配时,我遇到了麻烦。
预期:
当用户输入类似mysite.com/randomslug
的URL时,路由器将检查slug以查找JSON对象中的匹配项。如果找到匹配,那么它将作为结果发送数据,如果未找到匹配,则它将发送404状态。
这是我的代码: 在我的/api/skateparks.js文件中:
// Skateparks
const skateparks = {
'toronto': {
'name': 'toronto',
'address': 'ontario',
'city': 'ville'
},
'aurora': {
'name': 'aurora',
'address': 'ontario',
'city': 'hello'
},
'ajax': {
'name': 'ajax',
'address': 'ontario',
'city': 'hell'
}
}
console.log('hello world')
/* GET skatepark listings. */
router.get('/skateparks', function (req, res, next) {
res.json(skateparks)
})
/* GET skatepark location */
router.get('/:id', function (req, res, next) {
let id = req.params.id
for (let skatepark in skateparks) {
if (skatepark === id) {
res.json(skateparks[id])
} else {
res.sendStatus(404)
}
}
})
在我的/pages/_id.vue/
文件中:
<script>
import axios from '~/plugins/axios'
export default {
name: 'id',
asyncData ({ params, error }) {
return axios.get('/api/skateparks')
.then((res) => {
return { skatepark: res.data }
})
.then(console.log, console.log)
.catch((e) => {
error({ statusCode: 404, message: params })
})
},
head () {
return {
title: `User:`
}
}
}
</script>
编辑:使用更新的get函数运气好。 仍然没有正常工作,因为它只从一些对象中提取数据而不是全部