如何在Pug模板Script标签中处理NodeJS传递的Sequelize对象
解决思路
方法1:利用Sequelize实例的toJSON()方法转普通对象
Sequelize实例自带toJSON()方法,能把实例转换为纯JavaScript对象,再通过JSON.stringify()转成JSON字符串,最后用Pug的!{}语法直接输出(避免HTML转义),前端就能直接拿到可用的对象/数组:
script. let keys = !{JSON.stringify(nodejskeys.toJSON())}
如果nodejskeys是Sequelize实例的集合(比如查询返回的数组),直接对整个集合处理也有效:
script. let keys = !{JSON.stringify(nodejskeys.map(item => item.toJSON()))}
方法2:直接提取目标数组属性
如果只需要Sequelize对象里的某个数组字段,直接提取该属性再转JSON即可:
// 假设nodejskeys里的targetArray是你需要的数组 script. let keys = !{JSON.stringify(nodejskeys.targetArray)}
为什么原来的写法无效
你用#{nodejskeys}时,Pug会调用Sequelize实例的toString()方法,输出的是实例的字符串表示(比如[object Object]),而非合法的JSON结构,所以前端无法解析成可用的对象/数组。而!{}会直接输出原始内容,配合JSON.stringify()就能生成前端可识别的JSON格式。
内容的提问来源于stack exchange,提问作者ShadowCoding
相关产品推荐
相关产品推荐

