【问题标题】:How can I use JSON.parse in nunjucks如何在 nunjucks 中使用 JSON.parse
【发布时间】: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; 中的数据返回格式错误且混乱

标签: json node.js mongodb express


【解决方案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
      猜你喜欢
      • 1970-01-01
      • 2016-06-02
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多