我写了一个查询,让我的职位从表中还返回有关每个帖子的作者的信息的结果:MySQL查询返回一个字符串如JSON_OBJECT()
SELECT post.id, post.text, post.datetime, JSON_OBJECT(
'username', user.username,
'firstName', user.firstName,
'firstName', user.lastName) as author
FROM post
INNER JOIN user ON post.authorId = user.id;
但响应的author
场的字符串:
author: "{"username": "@", "firstName": null}"
datetime: "2017-05-02T20:23:23.000Z"
id: 10
text: "5555"
我试图修复使用CAST
但无论如何author
是一个字符串:
CAST(JSON_OBJECT(
'username', user.username,
'firstName', user.firstName,
'firstName', user.lastName) as JSON) as author
为什么会发生,以及如何解决这个问题?
UPD:
我发送如何使用Node.js和快速从服务器的数据:
结果的console.log
app.get('/posts', (req, res, next) => {
getPosts().then((posts) => {
res.setHeader('Content-Type', 'application/json');
res.send(posts);
})
.catch(next);
});
// ...
getPosts() {
return new Promise((resolve, reject) => {
const query = `
SELECT post.id, post.text, post.datetime, JSON_OBJECT(
'username', user.username,
'firstName', user.firstName,
'firstName', user.lastName) as author
FROM post
INNER JOIN user ON post.authorId = user.id;`;
this.connection.query(query, (err, result) => {
if(err) {
return reject(new Error("An error occured getting the posts: " + err));
}
console.log(result) // prints author as a string
resolve(result || []);
});
});
}
:
{
id: 1,
text: 'hello, world!',
datetime: 2017-05-02T15:08:34.000Z,
author: '{"username": "@", "firstName": null}'
}
这里我也试图改变res.send(posts)
到res.json(posts)
但这没有帮助。
从客户端我的函数式服务器的帖子:
export const getPosts =() => {
customFetch(apiUrl + '/posts')
.then(response => response.json())
.then(json => json)
};
大概的东西。这是什么BTW? – e4c5
我使用javascript – rel1x
我不是一个节点专家,但我的理解是,它有多种不同的方式连接到一个RDBMS,可悲的是你所选择的似乎并不支持json对象。 JSON毕竟是一些什么最近除了mysql – e4c5