| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- const mongojs = require('../app/js/infrastructure/mongojs')
- const { db } = mongojs
- const async = require('async')
- const minilist = require('minimist')
- const updateUser = function (user, callback) {
- console.log(`Updating user ${user._id}`)
- const update = {
- $set: {
- emails: [{
- email: user.email,
- createdAt: new Date()
- }]
- }
- }
- db.users.update({_id: user._id}, update, callback)
- }
- const updateUsers = (users, callback) =>
- async.eachLimit(users, ASYNC_LIMIT, updateUser, function (error) {
- if (error) {
- callback(error)
- return
- }
- counter += users.length
- console.log(`${counter} users updated`)
- loopForUsers(callback)
- })
- var loopForUsers = callback =>
- db.users.find(
- { emails: {$exists: false} },
- { email: 1 }
- ).limit(FETCH_LIMIT, function (error, users) {
- if (error) {
- callback(error)
- return
- }
- if (users.length === 0) {
- console.log(`DONE (${counter} users updated)`)
- return callback()
- }
- updateUsers(users, callback)
- })
- var counter = 0
- var run = () =>
- loopForUsers(function (error) {
- if (error) { throw error }
- process.exit()
- })
- let FETCH_LIMIT, ASYNC_LIMIT
- var setup = function () {
- let args = minilist(process.argv.slice(2))
- FETCH_LIMIT = (args.fetch) ? args.fetch : 100
- ASYNC_LIMIT = (args.async) ? args.async : 10
- }
- setup()
- run()
|