如何在 ejs 页面上设置 JSON 值 [英] How to set JSON value on the ejs page

查看:51
本文介绍了如何在 ejs 页面上设置 JSON 值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在我的 EJS 页面上返回 JSON 字段,但它变为空白,有人可以帮助我:

site-model.js

const mysql = require('mysql');var config = require('./../../database/config');const connection = mysql.createConnection(config);函数getAbout(查询){返回新的承诺((解决,拒绝)=> {connection.query(查询,函数(错误,行,字段){如果(错误)返回拒绝(错误)解决(行)});});}module.exports = (异步函数(){const result = await getAbout('SELECT * FROM sobre ORDER BY cod DESC LIMIT 1');返回结果;})()

site.js 文件,我在其中导入 site-model.js 并通过传递值呈现 ejs 页面:

site.js

var about(异步函数(){about = JSON.parse(JSON.stringify(await require('./site-model')))})()模块.出口 = {pageSite: (req, res, next) =>{console.log('About here: ', about);//控制台正常,JSON 正在返回res.render('./site/index', { dados: about });//在这里帮忙},}

我从渲染数据接收数据的ejs页面:

<div class="wowfadeInUp" data-wow-duration="1s" data-wow-delay="300ms"><h2><%= dados.titulo %></h2><!-- 在这里帮助-->

<!-- 子标题--><div class="wowfadeInDown" data-wow-duration="1s" data-wow-delay="300ms"><h4><%= dados.sub_titulo %></h4><!-- 在这里帮助-->

查看控制台的返回:

h4 和 h2 为空:

解决方案

解决方案

我设法达到了令人满意的结果,请参阅:

site-model.js

const mysql = require('mysql');var config = require('./../../database/config');const connection = mysql.createConnection(config);功能选择(查询){返回新的承诺((解决,拒绝)=> {connection.query(查询,函数(错误,行,字段){如果(错误)返回拒绝(错误)解决(行);});});}模块.出口 = {getSobre:(异步函数(){const result = await select('SELECT * FROM sobre ORDER BY cod');返回结果;})(),}

site.js(渲染)

const funcao = require('./site-model');变清醒(异步函数(){sobre = JSON.parse(JSON.stringify(await funcao.getSobre))})()模块.出口 = {pageSite: (req, res, next) =>{res.render('./site/index', {TBSobre:清醒});},}

页面 index.ejs

 <!-- Preenche dados vindos do MySQL --><% TBSobre.forEach(function(row){%><!-- 标题--><div class="wowfadeInUp" data-wow-duration="1s" data-wow-delay="300ms"><h2><%=row.titulo%>

<!-- 子标题--><div class="wowfadeInDown" data-wow-duration="1s" data-wow-delay="300ms"><h4><%= row.sub_titulo %></h4>

<% });%>

结果在这里

谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

I need to return JSON fields on my EJS page but it is coming blank, can someone help me:

site-model.js

const mysql = require('mysql');
var config = require('./../../database/config');
const connection = mysql.createConnection(config);

function getAbout (query) {
    return new Promise((resolve, reject) => {
        connection.query(query, function (err, rows, fields) {
            if (err) return reject(err)
            resolve(rows)
        });
    });
}

module.exports = (async function () {
    const result = await getAbout('SELECT * FROM sobre ORDER BY cod DESC LIMIT 1');
    return result;
})()

site.js file where I import site-model.js and render the ejs page by passing the values:

site.js

var about
(async function () {
  about = JSON.parse(JSON.stringify(await require('./site-model')))
})()

module.exports = {

  pageSite: (req, res, next) => {

    console.log('About here: ', about);//Console ok, JSON is returning

    res.render('./site/index', { dados: about });// Help here

  },

}

My ejs page that receives the data from the render data:

<!-- Título -->
<div class="wow fadeInUp" data-wow-duration="1s" data-wow-delay="300ms">
     <h2><%= dados.titulo %></h2><!-- Help Here -->
</div>

<!-- Sub-Título -->
<div class="wow fadeInDown" data-wow-duration="1s" data-wow-delay="300ms">
     <h4><%= dados.sub_titulo %></h4><!-- Help Here -->
</div>

See the return of the console:

h4 and h2 coming empty:

解决方案

SOLUTION

I managed to reach a satisfactory result, see:

site-model.js

const mysql = require('mysql');
var config = require('./../../database/config');
const connection = mysql.createConnection(config);

function select(query) {
    return new Promise((resolve, reject) => {
        connection.query(query, function (err, rows, fields) {
            if (err) return reject(err)
            resolve(rows);
        });
    });
}

module.exports = {

    getSobre: (async function () {
        const result = await select('SELECT * FROM sobre ORDER BY cod');
        return result;        
    })(),

}

site.js (render)

const funcao = require('./site-model');

var sobre

(async function () {
  sobre = JSON.parse(JSON.stringify(await funcao.getSobre))
})()

module.exports = {

  pageSite: (req, res, next) => {

    res.render('./site/index', {
      TBSobre: sobre
    });
  },

}

Page index.ejs

   <!-- Preenche dados vindos do MySQL -->
   <% TBSobre.forEach(function(row){ %>
   <!-- Título -->
   <div class="wow fadeInUp" data-wow-duration="1s" data-wow-delay="300ms">
        <h2><%= row.titulo %> </h2>
   </div>

   <!-- Sub-Título -->
   <div class="wow fadeInDown" data-wow-duration="1s" data-wow-delay="300ms">
        <h4><%= row.sub_titulo %></h4>
   </div>
<% }); %>

Result Here

Thank you!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

这篇关于如何在 ejs 页面上设置 JSON 值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
Java开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆