我使用node express为后端创建了一个Web应用程序,并为前端创建了vue。 现在我发布一个对象来表达,使用jquery(我知道它将在以后切换),它包含一个数组。当阵列命中快速路由器时,它会将对象中的数组转换为映射。如果我在控制台中打印对象,它似乎仍然是一个数组,但当express得到它时,它是一个地图。任何人都知道导致此问题的原因,或者有关如何解决此问题的想法?
index.vue
test(){
// testing why express is mapping maps
const body = {
user_id:0,
user_name:'',
user_email:'',
user_projects:[{test:'test'}]
}
console.log(body)
$.post('/MyApp/api/users/createUser',body)
.done((data)=> console.log(data))
.fail((err) => console.log(err))
},
快递
router.post('/users/createUser', async(req, res, next) => {
console.log('/users/createUser');
console.log(JSON.stringify(req.body));
res.json(req.body);
});
控制台
// front end
index.vue ? 223 bf930 : 222
{
user_id: 0
, user_name: ""
, user_email: ""
, user_projects: Array(1)
}
user_email: ""
user_id: 0 user_name: ""
user_projects: Array(1) 0: {
test: "test"
}
length: 1 __proto__: Array(0) __proto__: Object
// Express Response
index.vue ? 223 bf930 : 229
{
user_id: "0"
, user_name: ""
, user_email: ""
, user_projects[0][test]: "test"
}
user_email: ""
user_id: "0"
user_name: ""
user_projects[0][test]: "test"
__proto__: Object
解决方案, 这是我发送数据的方式。
$.ajax({
url: '/MyApp/api/users/createUser',
method: 'POST',
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(body)
})
答案 0 :(得分:0)
问题是您将数据作为查询字符串发送,但您需要的是json。解析包含数组的查询字符串将返回一个对象而不是一个数组。
您只需要将json数据类型添加到$.post
所以试试这个
$.post('/MyApp/api/users/createUser',body, 'json')