如何在 nunjucks 中使用 JSON.parse

Posted

技术标签:

【中文标题】如何在 nunjucks 中使用 JSON.parse【英文标题】:How can I use JSON.parse in nunjucks 【发布时间】:2018-05-04 07:04:19 【问题描述】:

我在mongodbexpress 中获取数据,返回没有错误,但我想在.find 的最终结果中使用JSON.parse,请参阅下面我是如何尝试这样做的

  app.get("/login", (req, res) => 
    var credentialClient = 
      expire_at: false,
      __v: false,
      _id: false
    ;

    rememberMe.find( username: "test-login" , credentialClient, function (err, credentialInfo) 
      if (err) 
        res.send(err);
       else 
        res.render("login.html", 
          usernameClient: JSON.parse(credentialInfo)
        );
      
    );
  );

没有JSON.parse,最终渲染在我的login.html中保持不变

 username: 'test-login' 

最终结果出现在login.html

<p class="center-align black-text" id="preFinalCredentialClient"> usernameClient </p>

谢谢你帮助我!

【问题讨论】:

我认为credentialInfo (mongo.find() 的结果)已经是 json 格式。你不需要打电话给JSON.parse() 它应该是什么样子的? @AlongkornChetasumon 他已经在json 中,但在 usernameClient 中渲染时,我的&lt;p class="black-text center-align"&gt; usernameClient &lt;/p&gt; 中的数据返回格式错误且混乱 【参考方案1】:

credentialInfo已经是JS对象了,不用parse了。

app.get("/login", (req, res) => 
    var credentialClient = 
      expire_at: false,
      __v: false,
      _id: false
    ;

    rememberMe.find( username: "test-login" ,
         credentialClient, function (err, credentialInfo) 
      if (err) 
        res.send(err);
       else 
        res.render("login.html", 
          usernameClient: credentialInfo
        );
      
    );
  );

<p class="center-align black-text" id="preFinalCredentialClient"> usernameClient.username </p>

然后,您可以在客户端访问usernameClient 的属性。

【讨论】:

【参考方案2】:

我希望下面的代码对你有用。在下面的示例中,我保留了静态 json 数据。在您的情况下,您可以将 json 数据存储在任何变量中并渲染

index.nunjucks 传递该变量。

var express = require( 'express' ) ;

var nunjucks = require( 'nunjucks' ) ;

var app = express() ;

app.get( '/', function( req, res )

 

var jsondata = 



firstName: "Rakesh",
lastName: "Barani"

;

return res.render('index.njk', data:jsondata) ;

res.render('index.njk', data: jsondata)
);

【讨论】:

【参考方案3】:

它已经返回 JSON 响应,所以 你可以使用这个:

res.render("login.html", 
   usernameClient: credentialInfo.username
);

【讨论】:

直到usernameClient: credentialInfo 呈现,但在usernameClient 中添加username 时,它不会在前端呈现 然后传递这个:usernameClient: credentialInfo

以上是关于如何在 nunjucks 中使用 JSON.parse的主要内容,如果未能解决你的问题,请参考以下文章

您如何按包含标签的帖子数量对博客帖子标签列表进行排序(在 Eleventy 中使用 Nunjucks)?

nunjucks如何使用?

Nunjucks简介&基本使用教程

在 nunjucks + 十一中的标签内使用变量和过滤器

nunjucks模板设计一个页面

Nunjucks for 循环运行两次