数据库操做( CURD )html
var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; # 数据库为 runoob var insertData = function(db, callback) { //链接到表 site var collection = db.collection('site'); //插入数据 var data = [{"name":"菜鸟教程","url":"www.runoob.com"},{"name":"菜鸟工具","url":"c.runoob.com"}]; collection.insert(data, function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("链接成功!"); insertData(db, function(result) { console.log(result); db.close(); }); });
> show dbs admin 0.000GB local 0.000GB runoob 0.000GB # 自动建立了 runoob 数据库 > show tables site # 自动建立了 site 集合(数据表) > db.site.find() # 查看集合中的数据 { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鸟教程", "url" : "www.runoob.com" } { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鸟工具", "url" : "c.runoob.com" } >
var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var selectData = function(db, callback) { //链接到表 var collection = db.collection('site'); //查询数据 var whereStr = {"name":'菜鸟教程'}; collection.find(whereStr).toArray(function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("链接成功!"); selectData(db, function(result) { console.log(result); db.close(); }); });
var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var updateData = function(db, callback) { //链接到表 var collection = db.collection('site'); //更新数据 var whereStr = {"name":'菜鸟教程'}; var updateStr = {$set: { "url" : "https://www.runoob.com" }}; collection.update(whereStr,updateStr, function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("链接成功!"); updateData(db, function(result) { console.log(result); db.close(); }); });
var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var delData = function(db, callback) { //链接到表 var collection = db.collection('site'); //删除数据 var whereStr = {"name":'菜鸟工具'}; collection.remove(whereStr, function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("链接成功!"); delData(db, function(result) { console.log(result); db.close(); }); });
http://wiki.jikexueyuan.com/project/node-lessons/mongodb-mongoose.html
Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,能够在异步的环境下执行。
同时它也是针对MongoDB操做的一个对象模型库,封装了MongoDB对文档的的一些增删改查等经常使用方法,让NodeJS操做Mongodb数据库变得更加灵活简单。
咱们经过Mongoose去建立一个“集合”并对其进行增删改查,就要用到它的三个属性:Schema(数据属性模型)、Model、Entitynode
// 首先引入 mongoose 这个模块 var mongoose = require('mongoose'); // 而后链接对应的数据库:mongodb://localhost/test // 其中,前面那个 mongodb 是 protocol scheme 的名称;localhost 是 mongod 所在的地址; // 端口号省略则默认链接 27017;test 是数据库的名称 // mongodb 中不须要创建数据库,当你须要链接的数据库不存在时,会自动建立一个出来。 // 关于 mongodb 的安全性,mongodb 我印象中安全机制很残废,用户名密码那套都作得很差,更 // 别提细致的用户权限控制了。不过不用担忧,mongodb 的默认配置只接受来自本机的请求,内网都连不上。 // 当须要在内网中为其余机器提供 mongodb 服务时,或许能够去看看 iptables 相关的东西。 mongoose.connect('mongodb://localhost/test'); // 上面说了,我推荐在同一个 collection 中使用固定的数据形式。 // 在这里,咱们建立了一个名为 Cat 的 model,它在数据库中的名字根据传给 mongoose.model 的第一个参数决定,mongoose 会将名词变为复数,在这里,collection 的名字会是 `cats`。 // 这个 model 的定义是,有一个 String 类型的 name,String 数组类型的 friends,Number 类型的 age。 // mongodb 中大多数的数据类型均可以用 js 的原生类型来表示。至于说 String 的长度是多少,Number 的精度是多少。String 的最大限度是 16MB,Number 的整型是 64-bit,浮点数的话,js 中 `0.1 + 0.2` 的结果都是乱来的。。就不期望什么了。。 // 这里能够看到各类示例:http://mongoosejs.com/docs/schematypes.html var Cat = mongoose.model('Cat', { name: String, friends: [String], age: Number, }); // new 一个新对象,名叫 kitty // 接着为 kitty 的属性们赋值 var kitty = new Cat({ name: 'Zildjian', friends: ['tom', 'jerry']}); kitty.age = 3; // 调用 .save 方法后,mongoose 会去你的 mongodb 中的 test 数据库里,存入一条记录。 kitty.save(function (err) { if (err) // ... console.log('meow'); });
mongoose增删改查mongodb
//查 app.get('/api/blogs', function(req, res) { Blog.find(function(err, todos, txt) { if (err) res.send(err); res.json(todos); }); }); //增 app.post('/api/blogs/:lis', function(req, res) { Blog.create({ title :req.body.title }, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err); res.json(todos); }); }); }); //删 app.delete('/api/blogs/:blog_id', function(req, res) { Blog.remove({ _id : req.params.blog_id //获取参数 }, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err) res.json(todos); }); }); }); //改 app.post('/api/editblogs/:blog_id', function(req, res) { var id = req.params.blog_id;//获取参数 var updatestr = { 'title': req.body.title }; //mongoose更新 Blog.findByIdAndUpdate(id, updatestr, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err) res.json(todos); }); }); });
//查 app.get('/api/blogs', function(req, res) { Blog.find(function(err, todos, txt) { if (err) res.send(err); res.json(todos); }); }); //增 app.post('/api/blogs/:lis', function(req, res) { //解析为html var mktext = markdown.toHTML(req.body.text); var myDate = new Date(); var addDate = myDate.toLocaleDateString(); var time = addDate; var index=req.params.lis; Blog.create({ index :index,//索引 title :req.body.title, //标题 text : mktext,//html格式文本 intro :req.body.intro, //摘要 mktext:req.body.text,//md格式文本 author:req.body.author,//做者 tag:req.body.tag,// date : time }, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err); res.json(todos); }); }); }); //删 app.delete('/api/blogs/:blog_id', function(req, res) { Blog.remove({ _id : req.params.blog_id //获取参数 }, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err) res.json(todos); }); }); }); //改 app.post('/api/editblogs/:blog_id', function(req, res) { var id = req.params.blog_id;//获取参数 var editmktext = markdown.toHTML(req.body.mktext);//解析文本 var updatestr = { 'title': req.body.title , 'text': editmktext , 'mktext': req.body.mktext , 'intro': req.body.intro, 'author' : req.body.author, 'tag' : req.body.tag }; //mongoose更新 Blog.findByIdAndUpdate(id, updatestr, function(err, todo) { if (err) res.send(err); Blog.find(function(err, todos) { if (err) res.send(err) res.json(todos); }); }); });
http://www.nodeclass.com/api/mongoose.html数据库