summaryrefslogtreecommitdiff
path: root/tools/migration
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2017-11-07 19:17:42 +0900
committersyuilo <syuilotan@yahoo.co.jp>2017-11-07 19:17:42 +0900
commitb2a2f98d6a12d752cb282cb381ddf7be86feeb48 (patch)
tree058f063ab3f40ca044fb3844504028b1c869c4ad /tools/migration
parentFix bug (diff)
downloadsharkey-b2a2f98d6a12d752cb282cb381ddf7be86feeb48.tar.gz
sharkey-b2a2f98d6a12d752cb282cb381ddf7be86feeb48.tar.bz2
sharkey-b2a2f98d6a12d752cb282cb381ddf7be86feeb48.zip
Better memory usage
Diffstat (limited to 'tools/migration')
-rw-r--r--tools/migration/use-gridfs.js30
1 files changed, 25 insertions, 5 deletions
diff --git a/tools/migration/use-gridfs.js b/tools/migration/use-gridfs.js
index f13d3c874e..313b10859f 100644
--- a/tools/migration/use-gridfs.js
+++ b/tools/migration/use-gridfs.js
@@ -6,7 +6,7 @@ const { Duplex } = require('stream')
const writeToGridFS = (bucket, buffer, ...rest) => new Promise((resolve, reject) => {
const writeStream = bucket.openUploadStreamWithId(...rest)
-
+
const dataStream = new Duplex()
dataStream.push(buffer)
dataStream.push(null)
@@ -42,10 +42,30 @@ const migrateToGridFS = async (doc) => {
return added && result.ok === 1
}
-const main = async () => {
- const docs = await db.get('drive_files').find()
- const all = await Promise.all(docs.map(migrateToGridFS))
- return all
+async function main() {
+ let i = 0;
+
+ const count = db.get('drive_files').count;
+
+ const iterate = async () => {
+ if (i == count) return true;
+ const doc = await db.get('drive_files').find({}, { skip: i })
+ const res = await migrateToGridFS(doc);
+ if (!res) {
+ return false;
+ } else {
+ i++
+ return await iterate();
+ }
+ }
+
+ const res = await iterate();
+
+ if (res) {
+ return 'ok';
+ } else {
+ throw 'something happened';
+ }
}
main().then(console.dir).catch(console.error)