我有一个简单的nodejs程序,我使用Mongoose从mongodb检索数据,并希望使用jade将其显示为表。这是我的代码:
服务器端代码
router.get('/', function(req, res, next) {
//Query the user table
user.find(function(err, result){
res.render('index',{users: JSON.stringify(result)});
});
});
翡翠代码
div
form(action='/',method='post')
div(data-role='fieldcontain')
fieldset(data-role='controlgroup')
label(for='name') User Name
input(id='name',type='text',value='',placeholder='Type your username here',name='name')
div(data-role='fieldcontain')
fieldset(data-type='vertical', data-role='controlgroup')
label(for='fname') First Name
input(id='fname',type='text',value='',placeholder='Type your first name here',name='fname')
div(data-role='fieldcontain')
fieldset(data-type='vertical', data-role='controlgroup')
label(for='lname') Last Name
input(id='lname',type='text',value='',placeholder='Type your last name here',name='lname')
div(data-role='fieldcontain')
input(type='submit',value='Create Profile',data-transition='fade', data-theme='c')
- var userlist = {users}
div
table
thead
tr: th Users
tbody
each user in userlist
tr
td=user
我的模型看起来像这样:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var user = new Schema({
username: String,
firstname: String,
lastname: String
});
module.exports = mongoose.model('user', user);
问题是来自jade路由的消息不会被jade读取为JSON。我尝试打印#{users}并打印完整的结果。但是,在每个循环中,它无法分离出两个记录。
我看一下这些问题:
不知何故,我觉得这条消息并没有作为JSON收到,因此也就是问题。你能帮忙吗?
答案 0 :(得分:3)
我在没有JSON的情况下尝试了你的代码。将其运行正常。
假设您的数据库中有用户的记录。
router.get('/', function(req, res, next) {
User.find(function(err,result){
console.log(result);
res.render('index', { title: 'Express' , users: result });
});
});
这是index.jade中的代码
extends layout
block content
h1= title
p Welcome to #{title}
-var userlist = users
div
table.table.table-hover
thead
tr: th Users
tbody
each user in users
tr
td=user.firstname
td=user.lastname
td=user.username
当我启动服务器并点击索引页面时,我得到了以下结果。
但是当我用JSON.stringyfy()做同样的事情时,这里没有显示任何内容,但数据就在那里。
希望它有所帮助!!祝你好运:)
答案 1 :(得分:0)
如果您想自动创建标题而不指定字段:
服务器端代码
router.get('/', function (req, res, next) {
user
.find({})
.select('-_id -__v') // This removes hidden MongoDB fields
.lean() // This removes all mongoose fields and return a simple javascript object
.then(result => { // I'm using promises, but you can use callbacks as well
console.log(result);
res.render('index', { title: 'Express', users: result });
})
.catch(ex => console.log(ex));
});
翡翠代码
extends layout
block content
h1= title
p Welcome to #{title}
-var firstUser = users[0] || undefined;
if firstUser
div
h1 Users
table.table.table-hover
thead
tr
each value, key in firstUser
th=key
tbody
each user in users
tr
each value, key in user
td=value