Better memory usage
This commit is contained in:
parent
68cf16882f
commit
b2a2f98d6a
|
@ -6,7 +6,7 @@ const { Duplex } = require('stream')
|
||||||
|
|
||||||
const writeToGridFS = (bucket, buffer, ...rest) => new Promise((resolve, reject) => {
|
const writeToGridFS = (bucket, buffer, ...rest) => new Promise((resolve, reject) => {
|
||||||
const writeStream = bucket.openUploadStreamWithId(...rest)
|
const writeStream = bucket.openUploadStreamWithId(...rest)
|
||||||
|
|
||||||
const dataStream = new Duplex()
|
const dataStream = new Duplex()
|
||||||
dataStream.push(buffer)
|
dataStream.push(buffer)
|
||||||
dataStream.push(null)
|
dataStream.push(null)
|
||||||
|
@ -42,10 +42,30 @@ const migrateToGridFS = async (doc) => {
|
||||||
return added && result.ok === 1
|
return added && result.ok === 1
|
||||||
}
|
}
|
||||||
|
|
||||||
const main = async () => {
|
async function main() {
|
||||||
const docs = await db.get('drive_files').find()
|
let i = 0;
|
||||||
const all = await Promise.all(docs.map(migrateToGridFS))
|
|
||||||
return all
|
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)
|
main().then(console.dir).catch(console.error)
|
||||||
|
|
Loading…
Reference in New Issue