ejs模板字符转json对象问题

我数据里的一个image字段的值是一串json字符串,用的mysql

[{"path":"http://zsnice.weharvest.com/msg/nices/f35cd9ca19d04b269474449b547ecfa6.jpeg"},{"path":"http://zsnice.weharvest.com/msg/nices/f35cd9ca19d04b269474449b547ecfa6.jpeg"}]

然后我我在ejs嵌套循环出来的时候报错了。

<% for(var i=0; i< nice.length; i++){ %>
                <div class="niceitem">
                    <a class="avatar"><img src="<%- nice[i].attachPath %>" onerror="javascript:this.src='/images/avatar.png';"></a>
                    <div class="cont">
                        <div class="title"><%- nice[i].title %></div>
                        <div class="weui-uploader images">
                            <div class="weui-cell__bd">
                                <div class="weui-uploader__bd">
                                    <ul class="weui-uploader__files">
                                        <% for( var o=0; o < nice[i].image.length; o++ ){ %>
                                        <li class="weui-uploader__file" src="<%- nice[i].image[o].path %>" onclick="prewivew(this)" style="background-image:url(<%- nice[i].image[o].path %>)"></li>
                                        <% } %>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
<% } %>

报了

Cannot read property 'length' of null

image.length 找不到,我就觉得是字符串没转号格式,
然后我在服务器端显吧数据转了下格式

db.nices.findAll({limit:10}).then(function (nice) {
            for (var i=0; i<nice.length;i++){
                nice[i].image=eval(nice[i].image);
            }
            res.render("nice/nice", {
                nice: nice
            });
        })

但发现还是不行,求解!
nice[i].image=JSON.parse(nice[i].image);
也试过了

阅读 4.2k
1 个回答
新手上路,请多包涵

<% nice = JSON.parse(nice)%>
如果返回的是模板字符串,就定义一个变量将模板字符串转化为对象就好了,然后遍历

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题