@@ -15,6 +15,11 @@ var currentVersion = '1.0';
1515var fs = require ( 'fs' ) ;
1616var path = require ( 'path' ) ;
1717
18+ var MongoClient = require ( 'mongodb' ) . MongoClient ;
19+ var connectOption = {
20+ useUnifiedTopology : true ,
21+ } ;
22+ var client ;
1823var db ;
1924var cipher = require ( './cipher' ) ;
2025
@@ -29,6 +34,9 @@ var sampleEntryName = (require(samplePackageJson).main || DEFAULT_SAMPLE_ENTRY);
2934var sampleServiceFile = path . resolve ( dirName , SAMPLE_RELATED_PATH , sampleEntryName ) ;
3035
3136function prepareDB ( next ) {
37+ if ( dbURL . indexOf ( 'mongodb://' ) !== 0 ) {
38+ dbURL = 'mongodb://' + dbURL ;
39+ }
3240 if ( fs . existsSync ( cipher . astore ) ) {
3341 cipher . unlock ( cipher . k , cipher . astore , function cb ( err , authConfig ) {
3442 if ( ! err ) {
@@ -38,22 +46,36 @@ function prepareDB(next) {
3846 + '@' + dbURL ;
3947 }
4048 } else {
41- log . error ( 'Failed to get mongodb auth:' , err ) ;
49+ console . error ( 'Failed to get mongodb auth:' , err ) ;
4250 }
43- db = require ( 'mongojs' ) ( dbURL , [ 'services' , 'infos' , 'rooms' ] ) ;
44- next ( ) ;
51+ MongoClient . connect ( dbURL , connectOption , function ( err , cli ) {
52+ if ( ! err ) {
53+ client = cli ;
54+ db = client . db ( ) ;
55+ next ( ) ;
56+ } else {
57+ console . error ( 'Failed to connect mongodb:' , err ) ;
58+ }
59+ } ) ;
4560 } ) ;
4661 } else {
47- db = require ( 'mongojs' ) ( dbURL , [ 'services' , 'infos' , 'rooms' ] ) ;
48- next ( ) ;
62+ MongoClient . connect ( dbURL , connectOption , function ( err , cli ) {
63+ if ( ! err ) {
64+ client = cli ;
65+ db = client . db ( ) ;
66+ next ( ) ;
67+ } else {
68+ console . error ( 'Failed to connect mongodb:' , err ) ;
69+ }
70+ } ) ;
4971 }
5072}
5173
5274function upgradeH264 ( next ) {
53- db . rooms . find ( { } ) . toArray ( function ( err , rooms ) {
75+ db . collection ( ' rooms' ) . find ( { } ) . toArray ( function ( err , rooms ) {
5476 if ( err ) {
5577 console . log ( 'Error in getting rooms:' , err . message ) ;
56- db . close ( ) ;
78+ client . close ( ) ;
5779 return ;
5880 }
5981 if ( ! rooms || rooms . length === 0 ) {
@@ -89,7 +111,7 @@ function upgradeH264(next) {
89111 }
90112 } ) ;
91113
92- db . rooms . save ( room , function ( e , saved ) {
114+ db . collection ( ' rooms' ) . updateOne ( { _id : room . _id } , room , function ( e , saved ) {
93115 if ( e ) {
94116 console . log ( 'Error in upgrading room:' , room . _id , e . message ) ;
95117 }
@@ -103,28 +125,28 @@ function upgradeH264(next) {
103125}
104126
105127function checkVersion ( next ) {
106- db . infos . findOne ( { _id : 1 } , function cb ( err , info ) {
128+ db . collection ( ' infos' ) . findOne ( { _id : 1 } , function cb ( err , info ) {
107129 if ( err ) {
108130 console . log ( 'mongodb: error in query info' ) ;
109- return db . close ( ) ;
131+ return client . close ( ) ;
110132 }
111133 if ( info ) {
112134 if ( info . version === '1.0' ) {
113135 next ( ) ;
114136 }
115137 } else {
116- db . services . findOne ( { } , function cb ( err , service ) {
138+ db . collection ( ' services' ) . findOne ( { } , function cb ( err , service ) {
117139 if ( err ) {
118140 console . log ( 'mongodb: error in query service' ) ;
119141 return db . close ( ) ;
120142 }
121143 var upgradeNext = function ( next ) {
122144 upgradeH264 ( function ( ) {
123145 info = { _id : 1 , version : currentVersion } ;
124- db . infos . save ( info , function cb ( e , s ) {
146+ db . collection ( ' infos' ) . save ( info , function cb ( e , s ) {
125147 if ( e ) {
126148 console . log ( 'mongodb: error in updating version' ) ;
127- return db . close ( ) ;
149+ return client . close ( ) ;
128150 }
129151 next ( ) ;
130152 } ) ;
@@ -162,15 +184,15 @@ function checkVersion (next) {
162184}
163185
164186function prepareService ( serviceName , next ) {
165- db . services . findOne ( { name : serviceName } , function cb ( err , service ) {
187+ db . collection ( ' services' ) . findOne ( { name : serviceName } , function cb ( err , service ) {
166188 if ( err || ! service ) {
167189 var crypto = require ( 'crypto' ) ;
168190 var key = crypto . pbkdf2Sync ( crypto . randomBytes ( 64 ) . toString ( 'hex' ) , crypto . randomBytes ( 32 ) . toString ( 'hex' ) , 4000 , 128 , 'sha256' ) . toString ( 'base64' ) ;
169191 service = { name : serviceName , key : cipher . encrypt ( cipher . k , key ) , encrypted : true , rooms : [ ] , __v : 0 } ;
170- db . services . save ( service , function cb ( err , saved ) {
192+ db . collection ( ' services' ) . save ( service , function cb ( err , saved ) {
171193 if ( err ) {
172194 console . log ( 'mongodb: error in adding' , serviceName ) ;
173- return db . close ( ) ;
195+ return client . close ( ) ;
174196 }
175197 saved . key = key ;
176198 next ( saved ) ;
@@ -228,7 +250,7 @@ prepareDB(function() {
228250 var sampleServiceKey = service . key ;
229251 console . log ( 'sampleServiceId:' , sampleServiceId ) ;
230252 console . log ( 'sampleServiceKey:' , sampleServiceKey ) ;
231- db . close ( ) ;
253+ client . close ( ) ;
232254
233255 writeSampleFile ( sampleServiceId , sampleServiceKey ) ;
234256 } ) ;
0 commit comments