![](/img/trans.png)
[英]Why does my API data show up as undefined when using a v-if in vue.js?
[英]Why does my api post request (Vue.js client) receive an undefined response from my express server?
我的客户是使用 Vuex 商店的 Vue.js。 我在服务器端使用 passport.js 进行身份验证。 登录和帐户注册正在工作。 检查 mongodb 显示新数据。 但是 express 正在向客户端发送未定义的响应。 这是我的第一个主要 javascript 项目,所以我希望这是我的眼睛还看不到的简单东西。
客户端:api.js
export async function registerUser(user) {
console.log("api to register user");
console.log(user);
const route = `${api}/register`;
return fetch(route, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(user)
})
.then(response => {
console.log(response.json());
return response.json();
})
.then(json => {
console.log(json);
return json;
})
.catch(err => {
console.error(err);
});
}
客户端:index.js(未定义 res 的 vuex 存储)
actions: {
async register(state, user) {
apis.registerUser(user).then(res => {
if (res.success) {
this.dispatch("loadUser");
alert("successfully registered");
}
});
},
async loadUser() {
apis.getUser().then(res => {
this.commit("setUser", res.user);
});
}
}
服务器:app.js
app.post('/api/v1/register', function(req, res) {
const success = true;
Users=new User({email: req.body.email, username : req.body.username});
console.log(req.body);
User.register(Users, req.body.password, function(err, user) {
if (err) {
console.log('account could not be saved');
success = false;
} else {
console.log('account saved');
}
})
res.send({success: success});
});
获取错误打印到控制台
app.js 路由中的服务器 console.logs 表明 req.body 有正确的数据并且用户帐户已成功保存。 res.send 上没有发生错误,但客户端收到未定义的响应。
在把我的头撞在桌子上和一些外部帮助之后,我找到了一个解决方案。 我有两个主要问题。
下面的工作代码:
api.js
export function registerUser(user) {
console.log("api to register user");
console.log(user);
const route = `${api}/register`;
return fetch(route, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(user)
})
.then(response => {
console.log(response.json());
return response.json();
})
}
index.js (vuex 存储)
actions: {
register(state, user) {
apis.registerUser(user).then(res => {
if (res.success) {
alert("successfully registered");
}
}).catch(err => {
console.error(err);
});
}
}
app.js 代码保持不变
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.