如何在nunjucks中使用JSON.parse

9

我正在使用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>

谢谢你的帮助!


1
我认为credentialInfo(来自mongo.find()的结果)已经是JSON格式了。你不需要调用JSON.parse() - Alongkorn
它应该长什么样子? - Sello Mkantjwa
@AlongkornChetasumon 已经在 json 中,但在渲染 {{ usernameClient }} 数据时,返回的数据格式混乱无序,出现了很多问题,在我的 <p class="black-text center-align">{{ usernameClient }}</p> 中。 - Gabriel
3个回答

3

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})
});

1

它已经返回JSON响应,因此您可以使用以下内容:

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

直到 usernameClient: credentialInfo 这一行代码,它可以正常渲染。但是当在 usernameClient 中添加 username 后,前端无法正常渲染。 - Gabriel
然后只需传递这个:usernameClient:credentialInfo - ravi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接