Skip to content

Instantly share code, notes, and snippets.

@dron247
Created December 7, 2018 15:00
Show Gist options
  • Save dron247/baec152b3ef603162423b8098ff59595 to your computer and use it in GitHub Desktop.
Save dron247/baec152b3ef603162423b8098ff59595 to your computer and use it in GitHub Desktop.
студентам: скрипт для подготовки БД
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