如何使用快速路由器和 vuex 服务和操作添加用户(post 请求)
how to add user (post request) using express router and vuex service and actions
在我的应用程序中,我正在创建一个模拟 API 并通过 Vuex 访问它来使用它。在快速路线中,我正在处理与发布请求(添加用户)相关的错误。现在,我无法理解如何将其传达给 Vuex 服务和操作。
表达routes.js
const router = require('express').Router();
// routing entrypoint
router.get('/users', (req, res) => {
const data = require('./data/users.json');
res.send(data);
});
router.post('/users', errorBoundaries, (req, res) => {
const data = require('./data/users.json');
res.status(200).send(data);
});
const errorBoundaries = (req, res, next) => {
const { name } = req.body.name;
const data = require('./data/users.422.json');
if (name.length === 0) {
return res.status(422).send(data);
}
// if string value is longer than 0, continue with next function in route
next();
};
module.exports = router;
Vuex 服务
// how to communicate - needs some example
/**
* @param {*} data object
*/
export async function addUsers(data) {
const response = await http.post('/users', data);
return response;
}
Vuex 动作和突变
async addUserAction({ commit}, payload) {
try {
const resp = await service.addUsers({
id: payload.id,
firstName: payload.firstName,
lastName: payload.lastName
});
commit('ADD_USERS',resp);
} catch(error) {
const message = error.response ? error.response.status : null;
console.log(message);
}
}
users.json
{
"data": [
{
"id": 1,
"firstName": "John",
"lastName": "Brown"
},
{
"id": 2,
"firstName": "Frank",
"lastName": "Lister"
}
]
}
我们需要添加更多错误处理并使用 Vuex 将其传递到 UI。我需要了解那部分。
您可以将错误消息存储在 Vuex 状态中:
const store = new Vuex.Store({
state: {
errorMessage: ''
},
mutations: {
updateErrorMessage (state, newErrorMessage) {
state.errorMessage = newErrorMessage
}
}
})
然后在你的 'addActionUser':
中提交
async addUserAction({ commit}, payload) {
try {
const resp = await service.addUsers({
id: payload.id,
firstName: payload.firstName,
lastName: payload.lastName
});
commit('ADD_USERS',resp);
} catch(error) {
const message = error.response ? error.response.status : null;
console.log(message);
commit('updateErrorMessage', message);
}
}
然后将计算的 属性 添加到任何感兴趣的组件:
computed: {
errorMessage() {
return this.$store.state.errorMessage;
}
}
并在存在时显示错误信息。
<div class="error" v-if="errorMessage">
<span>{{ errorMessage }}</span>
</div>
在我的应用程序中,我正在创建一个模拟 API 并通过 Vuex 访问它来使用它。在快速路线中,我正在处理与发布请求(添加用户)相关的错误。现在,我无法理解如何将其传达给 Vuex 服务和操作。
表达routes.js
const router = require('express').Router();
// routing entrypoint
router.get('/users', (req, res) => {
const data = require('./data/users.json');
res.send(data);
});
router.post('/users', errorBoundaries, (req, res) => {
const data = require('./data/users.json');
res.status(200).send(data);
});
const errorBoundaries = (req, res, next) => {
const { name } = req.body.name;
const data = require('./data/users.422.json');
if (name.length === 0) {
return res.status(422).send(data);
}
// if string value is longer than 0, continue with next function in route
next();
};
module.exports = router;
Vuex 服务
// how to communicate - needs some example
/**
* @param {*} data object
*/
export async function addUsers(data) {
const response = await http.post('/users', data);
return response;
}
Vuex 动作和突变
async addUserAction({ commit}, payload) {
try {
const resp = await service.addUsers({
id: payload.id,
firstName: payload.firstName,
lastName: payload.lastName
});
commit('ADD_USERS',resp);
} catch(error) {
const message = error.response ? error.response.status : null;
console.log(message);
}
}
users.json
{
"data": [
{
"id": 1,
"firstName": "John",
"lastName": "Brown"
},
{
"id": 2,
"firstName": "Frank",
"lastName": "Lister"
}
]
}
我们需要添加更多错误处理并使用 Vuex 将其传递到 UI。我需要了解那部分。
您可以将错误消息存储在 Vuex 状态中:
const store = new Vuex.Store({
state: {
errorMessage: ''
},
mutations: {
updateErrorMessage (state, newErrorMessage) {
state.errorMessage = newErrorMessage
}
}
})
然后在你的 'addActionUser':
中提交async addUserAction({ commit}, payload) {
try {
const resp = await service.addUsers({
id: payload.id,
firstName: payload.firstName,
lastName: payload.lastName
});
commit('ADD_USERS',resp);
} catch(error) {
const message = error.response ? error.response.status : null;
console.log(message);
commit('updateErrorMessage', message);
}
}
然后将计算的 属性 添加到任何感兴趣的组件:
computed: {
errorMessage() {
return this.$store.state.errorMessage;
}
}
并在存在时显示错误信息。
<div class="error" v-if="errorMessage">
<span>{{ errorMessage }}</span>
</div>