这是越来越相当复杂不过,这是一个包装函数,参数是数据库变量db,然后做一个页面呈现,我们要使用('usercollection')做一个查询,然后返回变量“文档”结果,再做一个渲染的userlist(需要Jade模板)。
设置Jade模板,进入C:\node\nodetest1\views\ ,打开index.jade.转存为userlist.jade,打开编辑:
extends layout
block content
h1.
User List
ul
each user, i in userlist
li
a(href="mailto:#{user.email}")= user.username
这是显示我们一开始需要的输出列表结果。
重启nodejs,浏览器进入 :3000/userlist,输出:
写入数据库
写入数据库并不是特别困难。从本质上讲,我们需要设置一个路由,需要一个POST,而不是GET。
STEP 1 – 创建数据输入打开app.js,找到 app.get();
app.get('/newuser', routes.newuser);在其后面加入:
app.get('http://www.jdon.com/', routes.index);
app.get('/users', user.list);
app.get('/helloworld', routes.helloworld);
app.get('/userlist', routes.userlist(db));
// New Code
app.get('/newuser', routes.newuser);
打开 /routes/index.js增加路由
exports.newuser = function(req, res){
res.render('newuser', { title: 'Add New User' });
};
设置页面,通过jade模板,打开 /views/index.jade,,另存为newuser.jade,用下面内容完全替代:
extends layout
block content
h1= title
form#formAddUser(name="adduser",method="post",action="/adduser")
input#inputUserName(type="text", placeholder="username", name="username")
input#inputUserEmail(type="text", placeholder="useremail", name="useremail")
button#btnSubmit(type="submit") submit
浏览器浏览:3000/newuser
STEP 2 – 创建 DB功能打开app.js,再次找到app.get,在后面加入:
app.get('http://www.jdon.com/', routes.index);
app.get('/users', user.list);
app.get('/helloworld', routes.helloworld);
app.get('/userlist', routes.userlist(db));
app.get('/newuser', routes.newuser);
加入:
app.post('/adduser', routes.adduser(db));打开/routes/index.js,加入:
exports.adduser = function(db) {
return function(req, res) {
// Get our form values. These rely on the "name" attributes
var userName = req.body.username;
var userEmail = req.body.useremail;
// Set our collection
var collection = db.get('usercollection');
// Submit to the DB
collection.insert({
"username" : userName,
"email" : userEmail
}, function (err, doc) {
if (err) {
// If it failed, return error
res.send("There was a problem adding the information to the database.");
}
else {
// If it worked, set the header so the address bar doesn't still say /adduser
res.location("userlist");
// And forward to success page
res.redirect("userlist");
}
});
}
}
在成功添加到数据库中,我们的用户转发回的userlist页面,在那里他们将看到他们的新添加的用户。
STEP 4 – 连接数据库增加数据重新启动nodejs,浏览:3000/newuser 输入数据
得到页面:
大功告成。
完整源码在github