如何将JSON数据从pug发送到javascript

如何将JSON数据从pug发送到javascript,javascript,node.js,html,Javascript,Node.js,Html,我通过以下方式将JSON对象从我的mangoDB发送到html页面: router.get('/index', function (req, res, next) { GenoverseInstance.find({name: req.query.name}, function (err, instance) { if (err) { res.send(err); throw err; } else if (

我通过以下方式将JSON对象从我的mangoDB发送到html页面:

router.get('/index', function (req, res, next) {
    GenoverseInstance.find({name: req.query.name}, function (err, instance) {
        if (err) {
            res.send(err);
            throw err;
        } else if (instance.length) {
            console.log('Object loaded');
            // object of the user
            console.log(instance[0]);
            res.render('index', {object: instance[0]});
        }
    });

});
我可以在html中使用它,如下所示:

.containerCustom
  .head
    h1
      | #{object.name}
但我不能在html页面中包含的javascript中使用它: 剧本

怎么可能呢


感谢

对象
仅在您的Pug模板中定义,并用于生成HTML,然后发送到浏览器。生成HTML后,该
对象将被消费并消失。它与页面的JS代码无关


如果您希望此数据在JS代码中可用,那么:从生成的页面,向服务器发出另一个(Ajax)请求,请求相同的数据。

对象仅在您的Pug模板中定义,并用于生成HTML,然后发送到浏览器。生成HTML后,该
对象将被消费并消失。它与页面的JS代码无关


如果您希望这些数据在JS代码中可用,那么:从生成的页面,向您的服务器发出另一个(Ajax)请求,请求相同的数据。

这是因为您的响应保存在本地范围中,而您不会将该响应传递到全局范围,您可以从外部访问它。 我只为你写了一个片段。检查一下,我希望这对你有帮助。 另外,如果你不了解范围,我建议你去读一些文章,比如或。另外,如果您不知道什么是异步请求,也可以阅读有关它们的内容

/*#########################*/
//所以,如果您想访问来自请求的响应,您必须保存它们或传递它们
//这是通过保存到全局变量来访问外部响应的一种方法
//创建一个变量,用于保存请求的响应
//全局范围从这里开始
var数据=“”;
函数getResponse(res){
//这里是开放的本地范围,您无法从外部访问
//现在你得到了你请求的回复
console.log('功能数据',res);
//你可以用这个反应来做一些事情
数据=res;
}
setTimeout(函数(){
var响应=[1,2,3];
//现在,我们将保存对数据的响应,以便从全局范围访问它
//但请记住,这是异步请求
数据=响应;
日志(“本地范围响应”,响应);
}, 1000);
setTimeout(函数(){
log(“全局范围数据”,data);//这里的数据保存异步请求的响应数据
}, 1100);
/* ############################### */
//这是通过将响应传递给函数来访问外部响应的另一种方法
函数getResponse(res){
//现在你得到了你请求的回复
console.log('功能数据',res);
//你可以用这个反应来做一些事情
数据=res;
}
setTimeout(函数(){
var响应=[1,2,3];
//另一种方法是将响应传递给函数,并对该数据执行所需操作
getResponse(response);
日志(“带括号的范围响应”,响应);

}, 1000);这是因为您的响应保存在本地作用域中,而您不会将该响应传递到全局作用域,您可以从外部访问它。 我只为你写了一个片段。检查一下,我希望这对你有帮助。 另外,如果你不了解范围,我建议你去读一些文章,比如或。另外,如果您不知道什么是异步请求,也可以阅读有关它们的内容

/*#########################*/
//因此,如果您想访问请求中的响应,您必须保存或传递它们
//这是通过保存到全局变量来访问外部响应的一种方法
//创建一个变量,用于保存请求的响应
//全局范围从这里开始
var数据=“”;
函数getResponse(res){
//这里是开放的本地范围,您无法从外部访问
//现在你得到了你请求的回复
console.log('功能数据',res);
//你可以用这个反应来做一些事情
数据=res;
}
setTimeout(函数(){
var响应=[1,2,3];
//现在,我们将保存对数据的响应,以便从全局范围访问它
//但请记住,这是异步请求
数据=响应;
日志(“本地范围响应”,响应);
}, 1000);
setTimeout(函数(){
log(“全局范围数据”,data);//这里的数据保存异步请求的响应数据
}, 1100);
/* ############################### */
//这是通过将响应传递给函数来访问外部响应的另一种方法
函数getResponse(res){
//现在你得到了你请求的回复
console.log('功能数据',res);
//你可以用这个反应来做一些事情
数据=res;
}
setTimeout(函数(){
var响应=[1,2,3];
//另一种方法是将响应传递给函数,并对该数据执行所需操作
getResponse(response);
日志(“带括号的范围响应”,响应);

}, 1000);如注释所示,由于@IsaacGodinez,此链接非常有用。 可以使用这行代码获取整个对象:

var data = !{JSON.stringify(object).replace(/<\//g, '<\\/')};

如评论所示,由于@IsaacGodinez,此链接非常有用。 可以使用这行代码获取整个对象:

var data = !{JSON.stringify(object).replace(/<\//g, '<\\/')};

我从未使用过mangoDB,但从HTML到JavaScript,它听起来都很棒?!不知道你的意思。创建一个单独的路由,只返回json,然后使用客户端javascript获取。浏览器的控制台有什么要说的吗?对你的问题有一个很好的解释。我从来没有使用过mangoDB,但从HTML到javascript听起来很不错?!不确定你的意思。创建一个单独的路由,只返回json,然后使用客户端javascript获取它。浏览器的控制台有什么要说的吗?对你的问题有很好的解释。
var name = "#{object}";