Created
December 7, 2018 15:00
-
-
Save dron247/baec152b3ef603162423b8098ff59595 to your computer and use it in GitHub Desktop.
студентам: скрипт для подготовки БД
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const mongodb = require('mongodb') | |
const MongoClient = mongodb.MongoClient | |
const bcrypt = require('bcrypt') | |
const connectionString = process.env.DB_CONNECTION_STRING | |
const dbName = process.env.DB_DATABASE_NAME | |
const collectionName = process.env.DB_USERS_COLLECTION_NAME | |
const defaultUserName = process.env.DEFAULT_USER_NAME | |
const defaultUserPassword = process.env.DEFAULT_USER_PASSWORD | |
const saltRounds = Number(process.env.PASSWORD_SALT_ROUNDS) | |
// related doc: http://mongodb.github.io/node-mongodb-native/3.0/tutorials/connect/ | |
function connectToDb() { | |
return new Promise((resolve, reject) => { | |
MongoClient.connect(connectionString, { | |
useNewUrlParser: true | |
}, (err, con) => { | |
if (err) { | |
reject(err) | |
} else { | |
resolve(con) | |
} | |
}) | |
}) | |
} | |
function findDefaultUser(collection, defaultUserName) { | |
return new Promise((resolve, reject) => { | |
collection.findOne({ | |
name: defaultUserName | |
}, (err, user) => { | |
if (err) { | |
reject(err) | |
} else { | |
resolve(user) | |
} | |
}) | |
}) | |
} | |
function createDefaultUser(collection, defaultUserName, passwordHash) { | |
return new Promise((resolve, reject) => { | |
const defaultUser = { | |
name: defaultUserName, | |
passwordHash: passwordHash | |
} | |
collection.insert(defaultUser, (err) => { | |
if(err) { | |
reject(err) | |
} else { | |
resolve() | |
} | |
}) | |
}) | |
} | |
async function setup() { | |
const connection = await connectToDb() | |
console.log('connection OK') | |
const database = connection.db(dbName) | |
const collection = database.collection(collectionName) | |
const defaultUser = await findDefaultUser(collection, defaultUserName) | |
if (!defaultUser) { | |
const passwordHash = await bcrypt.hash(defaultUserPassword, saltRounds) | |
await createDefaultUser(collection, defaultUserName, passwordHash) | |
console.log('default user CREATED') | |
} else { | |
console.log('default user FOUND') | |
} | |
connection.close() | |
} | |
setup() | |
console.log(`MONGO Connection string ${connectionString}`) | |
console.log(`MONGO Collection ${collectionName}`) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment