【问题标题】:Display JSON data with Node.js and Handlebars使用 Node.js 和 Handlebars 显示 JSON 数据
【发布时间】:2018-07-12 10:29:24
【问题描述】:

我正在学习 Node.js,但无法通过返回 json 显示用户名。这是我正在使用的:

app.js

const express = require('express');
const path = require('path');
const expressHbs  = require('express-handlebars');
const methodOverride  = require('method-override');
const bodyParser = require('body-parser');
const flash = require('connect-flash');
const moment = require('moment');
const session = require('express-session');
const passport = require('passport');

// global variables
    app.use(function(req, res, next) {
    res.locals.success_msg = req.flash('success_msg');
    res.locals.error_msg = req.flash('error_msg');
    res.locals.error = req.flash('error');
    // res.locals.user = **req.user** || null;
    res.locals.user = **JSON.stringify(req.user)** || null;
    next();
});

list.hbs

在此页面上,我像这样转储用户对象:{{user}}

尝试JSON.stringify(req.user) 并得到以下输出。

{"_id":"5a720ab7b09fed40ef0e0c96","uid":"3456","fname":"Brad","lname":"Jones","active":true,"accessLevel":3,"date":"2018-02-01T23:51:59.381Z"}

尝试req.user,得到以下输出。

{ _id: 5a720ab7b09fed40ef0e0c96, uid: '3456', fname: 'Brad', lname: 'Jones', active: true, accessLevel: 3, date: 2018-02-02T00:05:44.253Z } 

我尝试过这样访问该名称,但没有任何效果。

  • {{user.lname}}
  • {{user['lname']}}

这很有趣,在 list.hbs 中我可以通过each 输出 fname。

{{#each user}}
    ({{fname}})
{{/each}}

注意下面输出中的“()”,它似乎有多个user.fname

() () () (Brad) ()

为什么会这样?

更新

刚刚试过这个:

{{#each user}}
    ({{@index}} {{fname}})
{{/each}}

output this:
(0 ) (1 ) (2 ) (3 Brad) (4 )

有没有办法定位第四个值?

【问题讨论】:

  • 您只是尝试{{lname}} 吗?
  • 嗨吉宾,感谢您的建议。可惜没用。
  • req.user.lname 怎么样?可能是我在暗示一个错误,但只是好奇。
  • 也试过 {{req.user.fname}},没有运气。有趣的是有一个使用 ejs 的工作相同的站点。我只是更喜欢车把。

标签: node.js handlebars.js nodes


【解决方案1】:

我发现了问题,模型与数据库列不匹配。我希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2014-12-30
    • 2014-06-10
    • 2017-09-02
    • 2017-06-02
    • 2020-06-11
    • 2017-08-22
    相关资源
    最近更新 更多