Javascript node.js上的Html注入问题

Javascript node.js上的Html注入问题,javascript,html,node.js,handlebars.js,html-injections,Javascript,Html,Node.js,Handlebars.js,Html Injections,您好,我正在尝试将html代码从字符串注入到视图中,我在尝试时遇到了一些错误,我被卡住了: 这是Node.js路由上的代码: router.get('/profile/:page', isLoggedIn, async (req, res) => { // Get current page from url (request parameter) let page_id = parseInt(req.params.page); let currentPage = 0

您好,我正在尝试将html代码从字符串注入到视图中,我在尝试时遇到了一些错误,我被卡住了:

这是Node.js路由上的代码:

router.get('/profile/:page', isLoggedIn, async (req, res) => {
    // Get current page from url (request parameter)
    let page_id = parseInt(req.params.page);
    let currentPage = 0;
    if (page_id > 0) currentPage = page_id;

    //Change pageUri to your page url without the 'page' query string 
    pageUri = '/profile/';


    /*Get total items*/
    await pool.query('SELECT COUNT(id) as totalCount FROM user where user_type="Client"', async (err, result,) => {

        // Display 10 items per page
        const perPage = 10,
            totalCount = result[0].totalCount;
        console.log("Estos son los datos",totalCount, currentPage, pageUri, perPage);
        // Instantiate Pagination class
        const Paginate = new Pagination(totalCount, currentPage, pageUri, perPage);


        /*Query items*/
        const data = {
            users: await pool.query('SELECT * FROM user where user_type="Client" LIMIT ' + 10 + ' OFFSET ' + Paginate.offset),
            pages: Paginate.links()// Paginate.lins()->return a variable with all html
        }

        res.render('profile', { data });
        
    });
});

<div id="pages">
                               
{{ data.pages }}

</div>
这是Links()函数

class Pagination{
    
    constructor(totalCount,currentPage,pageUri,perPage=2){
        this.perPage = perPage;
        this.totalCount =parseInt(totalCount);
        this.currentPage = parseInt(currentPage);
        this.previousPage = this.currentPage - 1;
        this.nextPage = this.currentPage + 1;
        this.pageCount = Math.ceil(this.totalCount / this.perPage);
        this.pageUri = pageUri;
        this.offset  = this.currentPage > 1 ? this.previousPage * this.perPage : 0;
        this.sidePages = 4;
        this.pages = false;
    }
    
    
    
    links(){
        this.pages='<ul class="pagination pagination-md">';
    
        if(this.previousPage > 0)
            this.pages+='<li class="page-item"><a class="page-link" href="'+this.pageUri + this.previousPage+'">Previous</a></li>';
    
    
            /*Add back links*/
            if(this.currentPage > 1){
                for (var x = this.currentPage - this.sidePages; x < this.currentPage; x++) {
                    if(x > 0)
                        this.pages+='<li class="page-item"><a class="page-link" href="'+this.pageUri+x+'">'+x+'</a></li>';
                }
            }
    
            /*Show current page*/
            this.pages+='<li class="page-item active"><a class="page-link" href="'+this.pageUri+this.currentPage+'">'+this.currentPage+'</a></li>';
    
            /*Add more links*/
            for(x = this.nextPage; x <= this.pageCount; x++){
    
                this.pages+='<li class="page-item"><a class="page-link" href="'+this.pageUri+x+'">'+x+' </a></li>';
    
                if(x >= this.currentPage + this.sidePages)
                    break;
            }
    
    
            /*Display next buttton navigation*/
            if(this.currentPage + 1 <= this.pageCount)
                this.pages+='<li class="page-item"><a class="page-link" href="'+this.pageUri+this.nextPage+'">Next</a></li>';
    
            this.pages+='</ul>';
    
        return this.pages;
    }

    

    }
    module.exports = Pagination;
此外,浏览器只检测文本,不检测代码

在浏览器中查看源文件


您使用的确切数据库库是什么? require('mysql')


那么,浏览器中的错误到底是什么


默认情况下,模板引擎将转义插入页面的任何文本,以便将其呈现为文本,而不会意外地解释为HTML。这就是您注入的HTML显示为纯文本的原因

如果您想要注入实际的HTML,那么您必须告诉模板引擎您不希望它逃避这个特定的插入。当您告诉我们您使用的是什么模板引擎时,我们可以帮助您如何做到这一点

要防止把手脱离HTML,只需使用如下三个大括号:

<div id="pages">
                               
{{{ data.pages }}}

</div>

{{{data.pages}}}
下面是描述它的相关文档



另外,
await
在您使用它的任何地方都不能使用
pool.query()
,因为mysql模块不支持承诺,因此对承诺以外的东西使用
await
没有任何用处。您可以像
require('mysql2/promise')
中那样使用mysql2模块,以获得mysql2的内置promise支持。然后,不要传递回调,只使用返回的承诺。

请在浏览器中查看源代码,并发布生成的整个页面的确切HTML,以便我们可以看到。您使用的确切数据库库是什么?它是否支持对
pool.query()
的承诺?以及,您的浏览器中的错误到底是什么?很抱歉当时没有响应,我有工作,我已经解决了
var a=document.getElementById(“pages”).value;document.getElementById(“s”).innerHTML=a
<div id="pages">
                               
{{{ data.pages }}}

</div>