设为首页 收藏本站
查看: 719|回复: 0

[经验分享] Nodejs访问MongoDB

[复制链接]

尚未签到

发表于 2017-2-21 10:40:14 | 显示全部楼层 |阅读模式
  Setting.js[用于保存数据库信息]

module.exports = {
name : 'ZMessage',
host : 'localhost'
}

  name为数据库名称,host为数据库访问地址。
  DBHelper.js[具体访问数据库的方法]

function DBHelper(){
this.dbSetting = require('./DBSettings.js');
this.Db = require('mongodb').Db;
this.Connection = require('mongodb').Connection;
this.Server = require('mongodb').Server;
this.GetDBExecutor = function(){
return new this.Db(this.dbSetting.name, new this.Server(this.dbSetting.host, this.Connection.DEFAULT_PORT, {}),{safe:false});
};
//获取所有用户信息
this.getAllUser = function(callback){
var executor = this.GetDBExecutor();
executor.open(function(err, db) {
if (err) {
return callback(err);
}
db.collection('UserInfo', function(err, collection) {
if (err) {
executor.close();
return callback(err);
}
collection.find({}).toArray(function(err,items){
executor.close();
items.forEach(function(item, index) {
console.log(item.userName);
});
});
});
});
}
//添加用户信息
this.addUser = function(user,callback){
var executor = this.GetDBExecutor();
executor.open(function(err, db) {
if (err) {
return callback(err);
}
db.collection('UserInfo', function(err, collection) {
console.log(4);
if (err) {
executor.close();
return callback(err);
}
collection.insert(user, {safe: true}, function(err, user) {
executor.close();
});
});
});
}
//添加用户信息
this.updateUser = function(user, callback){
var executor = this.GetDBExecutor();
executor.open(function(err, db){
if (err) {
return callback(err);
}
db.collection('UserInfo', function(err, collection){
if (err) {
executor.close();
return callback(err);
}
collection.update({
"userId": user.userId
}, {
$set: {
userName: "更改后"
}
}, {
saft: false,
upsert: true
}, function(err, user){
executor.close();
});
});
});
}
//删除用户信息
this.deleteUser = function(userId,callback){
var executor = this.GetDBExecutor();
executor.open(function(err, db) {
if (err) {
return callback(err);
}
db.collection('UserInfo', function(err, collection) {
if (err) {
executor.close();
return callback(err);
}
collection.remove({"userId":userId},{saft:false},function(err, user) {
executor.close();
});
});
});
}
}
module.exports = new DBHelper();
  假设已经存在UserInfo集合。
  app.js启动文件用于测试

var dbclient = require('./DBHelper/DBHelper');
dbclient.addUser({userId:3,userName:'李四',userStatus : false},function(err){
console.log(err);
});
dbclient.getAllUser(function(err){
console.log(err);
});
dbclient.updateUser({userId:3,userName:'李四',userStatus : true},function(err){
console.log(err);
});
dbclient.deleteUser(3,function(err){
console.log(err);
});
  关于更新,有几种更新方式

Fields


Name
Description

[size=1.04em]$inc
Increments the value of the field by the specified amount.


[size=1.04em]$rename
Renames a field.


[size=1.04em]$setOnInsert
Sets the value of a field upon documentation creation during an upsert. Has no effect on update operations that modify existing documents.


[size=1.04em]$set
Sets the value of a field in an existing document.


[size=1.04em]$unset
Removes the specified field from an existing document.



Array

Operators


Name
Description

[size=1.04em]$
Acts as a placeholder to update the first element that matches the query condition in an update.


[size=1.04em]$addToSet
Adds elements to an existing array only if they do not already exist in the set.


[size=1.04em]$pop
Removes the first or last item of an array.


[size=1.04em]$pullAll
Removes multiple values from an array.


[size=1.04em]$pull
Removes items from an array that match a query statement.


[size=1.04em]$pushAll

Deprecated. Adds several items to an array.


[size=1.04em]$push
Adds an item to an array.



Modifiers


Name
Description

[size=1.04em]$each
Modifies the [size=1.04em]$push and [size=1.04em]$addToSet operators to append multiple items for array updates.


[size=1.04em]$slice
Modifies the [size=1.04em]$push operator to limit the size of updated arrays.


[size=1.04em]$sort
Modifies the [size=1.04em]$push operator to reorder documents stored in an array.





Bitwise


Name
Description


[size=1.04em]$bit
Performs bitwise [size=1.04em]AND and [size=1.04em]OR updates of integer values.



Isolation


Name
Description


[size=1.04em]$isolated
Modifies behavior of multi-updates to improve the isolation of the operation.







 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345158-1-1.html 上篇帖子: NodeJS之Redirect 下篇帖子: nodejs mongodb 操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表