Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Express/Node.js中呈现MySQL结果:无法分配给只读属性'_当地人';_Javascript_Mysql_Node.js_Express_Handlebars.js - Fatal编程技术网

Javascript 在Express/Node.js中呈现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

我试图使用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

    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}}