定义和使用从 Express 传递到 EJS 的对象
Defining and using an object passed from Express to EJS
在我的路由处理程序中,我将一个对象(该对象是 SELECT 查询数据库的结果)传递到我的 ejs 文件,该文件呈现如下:
const query = await pool.query('SELECT * FROM table');
const obj = query.rows();
response.render('/ejspage', {
obj: obj
});
在我的 ejs 文件中,我试图将这个对象分配给一个变量并循环遍历它:
<script>
var data = '<%= obj %>';
data.forEach(function(o) {
console.log(o);
}
</script>
这会导致以下错误:Uncaught TypeError: obj.forEach is not a function
我试过使用 JSON.parse(obj)
但这会导致以下错误 Uncaught SyntaxError: Unexpected token o in JSON at position 1
我也曾尝试 JSON.stringify(obj)
解决错误,但没有成功
当我打印出变量 console.log(obj)
时,我得到:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
我知道我可以在 ejs 中使用嵌入式 javascript(当我这样做时,我可以在 obj 上使用 forEach() 就好了)但是为了我的特定目的,我想按照所示的方式来做(即在 <script>
标签内)。
您需要同时使用 JSON.stringify
和 JSON.parse
<script>
var data = JSON.parse('<%= JSON.stringify(obj) %>');
data.forEach(function(o) {
console.log(o);
}
</script>
我发现在某些情况下,JSON stringify
的 JSON parse
仍然出错,并从 post 做 cookie 解析中获得灵感
<script>
var data = JSON.parse(decodeURIComponent('<%=encodeURIComponent( JSON.stringify(data) ) %>'))
data.forEach(function(o) {
console.log(o);
}
</script>
替代方法是使用 res.cookie
,但限制为 4 MB
在我的路由处理程序中,我将一个对象(该对象是 SELECT 查询数据库的结果)传递到我的 ejs 文件,该文件呈现如下:
const query = await pool.query('SELECT * FROM table');
const obj = query.rows();
response.render('/ejspage', {
obj: obj
});
在我的 ejs 文件中,我试图将这个对象分配给一个变量并循环遍历它:
<script>
var data = '<%= obj %>';
data.forEach(function(o) {
console.log(o);
}
</script>
这会导致以下错误:Uncaught TypeError: obj.forEach is not a function
我试过使用 JSON.parse(obj)
但这会导致以下错误 Uncaught SyntaxError: Unexpected token o in JSON at position 1
我也曾尝试 JSON.stringify(obj)
解决错误,但没有成功
当我打印出变量 console.log(obj)
时,我得到:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
我知道我可以在 ejs 中使用嵌入式 javascript(当我这样做时,我可以在 obj 上使用 forEach() 就好了)但是为了我的特定目的,我想按照所示的方式来做(即在 <script>
标签内)。
您需要同时使用 JSON.stringify
和 JSON.parse
<script>
var data = JSON.parse('<%= JSON.stringify(obj) %>');
data.forEach(function(o) {
console.log(o);
}
</script>
我发现在某些情况下,JSON stringify
的 JSON parse
仍然出错,并从 post 做 cookie 解析中获得灵感
<script>
var data = JSON.parse(decodeURIComponent('<%=encodeURIComponent( JSON.stringify(data) ) %>'))
data.forEach(function(o) {
console.log(o);
}
</script>
替代方法是使用 res.cookie
,但限制为 4 MB