Express/Node.js中呈现MySQL结果:无法分配给只读属性'_当地人'
Rendering MySQL result in Express/Node.js: Cannot assign to read only property '_locals'
我正在尝试使用Handlebars来显示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);
});
"data"看起来正是我想要的,它有一个包含三列和正确值的对象数组。我的车把的相关部分看起来像:
{{#each data}}{{data.col2}}{{/each}}
然后,当我尝试加载页面时,我得到了以下错误(如果有帮助,我可以显示更多):
TypeError: Cannot assign to read only property '_locals' of <and then my array of objects followed by a stack trace>
我想我不了解MySQL查询是如何返回的。
完全删除JSON.stringify()
行,并将{ result: result }
(如果您有现代版本的节点(v4.x+),则仅传递{ result }
)直接传递给您的res.render()
。
这一行实际上是将数据库结果转换为JSON字符串。JSON字符串和JavaScript对象不相同。通过省略JSON.stringify()
,您可以将result
保留为一个适当的数组(而不是包含数组的字符串),它可以在模板中迭代。
此外,你的车把模板需要看起来像:
{{#each result}}
您似乎正在向模板传递字符串类型data
。
尝试更换线路
res.render('text', data);
至
res.render('text', result);
相关文章:
- 是否可以使用CSS分配数据属性
- 为什么 Jasmine 在我设置 selectedIndex 时抱怨“试图分配给只读属性”
- 尝试分配只读属性,即使相同的命令在其他地方也有效
- 因果报应:试图分配给只读属性
- 在[background:url({{XXX}})无重复中心的严格模式下,不允许分配只读属性
- 补间最大动画 无法分配给只读属性“_gsTweenID”
- AngularJS $http.delete 在“类型错误:无法分配给只读属性'方法'”中中断
- Ionic2 + Angular2 - 尝试分配给只读属性
- 未捕获的类型错误: 无法分配给只读属性
- 类型错误: 无法分配给只读属性“选中”复选框
- 不能分配给只读属性“_id”
- 在 IE 11 的严格模式下,不允许将 AngularJS 分配给只读属性
- 奇怪的行为angularjs返回"类型错误:无法分配给只读属性"
- IndexedDBShim.js错误:JavaScript运行时错误:在严格模式下不允许分配只读属性
- Javascript:无法分配给只读属性'_epoch'的错误
- Chrome开发-无法分配只读属性
- Angular.JS未捕获类型错误:无法分配给只读属性
- 类型错误:试图分配只读属性.在iOS8 Safari上
- CreateJS错误:不能分配只读属性'tweenjs_count'qContainer
- Express/Node.js中呈现MySQL结果:无法分配给只读属性'_当地人'