Javascript 在Express/Node.js中呈现MySQL结果:无法分配给只读属性'_当地人';
我试图使用Handlebar显示从MySQL查询返回的一些数据。路线如下所示:Javascript 在Express/Node.js中呈现MySQL结果:无法分配给只读属性'_当地人';,javascript,mysql,node.js,express,handlebars.js,Javascript,Mysql,Node.js,Express,Handlebars.js,我试图使用Handlebar显示从MySQL查询返回的一些数据。路线如下所示: var query = "SELECT col1, col2, col3 FROM table WHERE section >= " + start + " AND section <= " + end + " ORDER BY col1 ASC"; connection.query(query, function(err, result) { if (err) throw err v
var query = "SELECT col1, col2, col3 FROM table WHERE section >= " + start + " AND section <= " + end + " ORDER BY col1 ASC";
connection.query(query, function(err, result) {
if (err) throw err
var data = JSON.stringify(result);
console.log(data);
res.render('text', data);
});
然后,当我尝试加载页面时,我得到以下错误(如果有帮助,我可以显示更多):
TypeError:无法分配给的只读属性“\u locals”
我想我不了解MySQL查询是如何返回的。完全删除
JSON.stringify()
行,并将{result:result}
(或者如果您有一个现代版本的node(v4.x+)直接传递给res.render()
这一行实际上是将数据库结果转换为JSON字符串。JSON字符串和JavaScript对象不同。通过省略JSON.stringify()
,您将保留result
一个适当的数组(而不是包含数组的字符串),该数组可以在模板中迭代
此外,您的把手模板需要如下所示:
{{#each result}}{{this.col2}}{{/each}}
{{{each result}}{{this.col2}}{{/each}}
完全删除
JSON.stringify()
行,并将{result:result}
(或者如果您有现代版本的node(v4.x+),则只将{result}
直接传递到res.render()
这一行实际上是将数据库结果转换为JSON字符串。JSON字符串和JavaScript对象不同。通过省略JSON.stringify()
,您将保留result
一个适当的数组(而不是包含数组的字符串),该数组可以在模板中迭代
此外,您的把手模板需要如下所示:
{{#each result}}{{this.col2}}{{/each}}
{{{each result}}{{this.col2}}{{/each}}
似乎您正在向模板传递字符串类型
数据
试着换一条线
res.render(“文本”,数据)代码>
到
res.render('text',result)代码>您似乎正在将字符串类型数据
传递给模板
试着换一条线
res.render(“文本”,数据)代码>
到
res.render('text',result)代码>好的,我的结果现在是一个无名的RowDataPacket数组,如下:[RowDataPacket{col1:1,col2:'Lorem',col3:'},RowDataPacket{col1:2,col2:'ipsum',col3:'},RowDataPacket{col1:3,col3:'},RowDataPacket{col1:4,col2:'sit col3:','}
如果我将其作为“结果”传递给手柄,我如何循环它?{{each result}{{result.col2}{{/each}}不起作用。好的,我的结果现在是一个无名的RowDataPacket数组,如下:[RowDataPacket{col1:1,col2:'Lorem',col3:'},RowDataPacket{col1:2,col2:'ipsum',col3:'},RowDataPacket col3:'3:'{col1:4,col2:'sit',col3:','}
如果我把这个作为“结果”传递给车把,我如何在它上面循环?{{each result}{{result.col2}{/each}}}{/each}}不起作用。@Kramhsiri改为res.render('text',{result:result});
那么你的循环就起作用了。@Kramhsiri改为res render('text',{result:result})
那么你的循环就可以工作了。
{{#each result}}{{this.col2}}{{/each}}