{
"_id" : 1234,
"username" : "cwbuecheler",
"email" : "cwbuecheler@nospam.com"
}
你可以创建你自己的_id字段的值,不过我觉得最好还是让mongo来做这件事。它会为每一条记录创建一个唯一的值。我们看看它是怎么工作的。在mongo的窗口中,输入:
复制代码 代码如下:
db.usercollection.insert({ “username” : “testuser1″, “email” : “testuser1@testdomain.com” })
重要提示:db就是我们上面创建的nodetest1数据库,usercollection就是我们的collection,相当于一张数据表。注意我们不需要提前创建这个collection,它会在第一次使用的时候自动创建。好了,按下回车。如果一切顺利,你会看到……什么也没有。这可不太好,输入:
复制代码 代码如下:
db.usercollection.find().pretty()
如果你好奇的话,pretty方法会格式化输出内容,添加换行缩进。它应该会显示:
复制代码 代码如下:
{
"_id" : ObjectId("5202b481d2184d390cbf6eca"),
"username" : "testuser1",
"email" : "testuser1@testdomain.com"
}
当然,你得到ObjectID应该是不一样的,mongo会自动生成一个。如果你以前使用过JSON接口的服务,现在是不是会觉得,哇,在web里调用这个应该很简单吧!嗯,你说对了。
提示:作为正式服务,你应该不希望所有的数据都存在最顶层。关于mongodb数据结构的设计,多看看Google吧。
现在我们有了一条数据,我们多添加点吧。在mongo窗口中输入:
复制代码 代码如下:
newstuff = [{ "username" : "testuser2", "email" : "testuser2@testdomain.com" }, { "username" : "testuser3", "email" : "testuser3@testdomain.com" }]
db.usercollection.insert(newstuff);
注意,我们通过一个数据一次传递了多条数据到collection。多简单!再使用上面的find命令你会看到这三条数据。
现在我们来整合前面搭建的web服务器和数据库。
第5步 – 把mongo连接到node
现在我们来建立一个页面,把数据库里的记录显示成一个漂亮的表格。这是我们准备生成的HTML内容:
复制代码 代码如下:
<ul>
<li><a href="https://www.jb51.net/mailto:testuser1@testdomain.com">testuser1</a></li>
<li><a href="https://www.jb51.net/mailto:testuser2@testdomain.com">testuser2</a></li>
<li><a href="https://www.jb51.net/mailto:testuser3@testdomain.com">testuser3</a></li>
</ul>
我知道这不太科学,不过你理解就好。我们只是为了建立一个简单的数据库读写程序,不是为了建立一个完整的网站。首先,我们往app.js(我们的程序的心脏和灵魂)里添加一点内容,这样才能接连上mongodb。打开c:\node\nodetest1\app.js,在顶部你会看到:
复制代码 代码如下:
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
在它下面添加:
复制代码 代码如下:
// New Code
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodetest1');
这几行会告诉app我们需要连接MongoDB,我们用Monk来负责这个连接,我们数据库位置是localhost:27017/nodetest1。注意27017是mongodb的默认端口,如果因为某些原因你修改了端口,记录这里也要跟着改。现在看文件的底部:
复制代码 代码如下:
app.get('https://www.jb51.net/', routes.index);
app.get('/users', user.list);
app.get('/helloworld', routes.helloworld);
下面添加一行:
复制代码 代码如下:
app.get('/userlist', routes.userlist(db));
这一行告诉app当用户访问/userlist路径的时候,我们需要把db变量传递到userlist路由。但是我们现在还没有userlist路由,现在就去创建一个吧。
第6步 – 读取mongo中的数据并显示
用你的编辑器打开c:\node\nodetest1\routes\idnex.js,里面有index和hello world两个route,现在我们来添加第三个:
复制代码 代码如下: