UNPKG

1.72 kBJavaScriptView Raw
1const moment = require('moment');
2const mongoose = require('mongoose');
3const domain = require('../');
4
5async function main() {
6 const connection = await mongoose.createConnection(process.env.MONGOLAB_URI);
7
8 const taskRepo = new domain.repository.Task(connection);
9
10 const membershipFor4update = {
11 typeOf: 'MembershipService',
12 id: '5b1874be4e1537775703963e'
13 };
14
15 const cursor = await taskRepo.taskModel.find(
16 {
17 'project.id': { $exists: true, $eq: '' },
18 name: domain.factory.taskName.RegisterProgramMembership,
19 status: {
20 $in: [domain.factory.taskStatus.Ready]
21 }
22 },
23 { createdAt: 0, updatedAt: 0 }
24 )
25 .sort({ runsAt: 1 })
26 .cursor();
27 console.log('tasks found');
28
29 let i = 0;
30 await cursor.eachAsync(async (doc) => {
31 i += 1;
32 const task = doc.toObject();
33
34 const membershipFor = task.data.object.itemOffered.membershipFor;
35 if (membershipFor === undefined || membershipFor === null) {
36 console.log('membershipFor undefined');
37 console.log('migrating task...', task.id, task.runsAt);
38
39 // 移行
40 await taskRepo.taskModel.findOneAndUpdate(
41 { _id: task.id },
42 { 'data.object.itemOffered.membershipFor': membershipFor4update }
43 ).exec();
44 } else {
45 console.log('membershipFor exists');
46 }
47
48 console.log('added', task.id, i);
49 });
50
51 console.log(i, 'tasks migrated');
52 // await mongoose.disconnect();
53}
54
55main().then(() => {
56 console.log('success!');
57}).catch((error) => {
58 console.error(error);
59 process.exit(1);
60});