-
Notifications
You must be signed in to change notification settings - Fork 0
/
discriminatorTest.js
83 lines (72 loc) · 1.46 KB
/
discriminatorTest.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
const mongoose = require('mongoose');
const agent = require('./db/setup');
const { Schema, model } = mongoose;
(async () => {
const ResourceSchema = new Schema({
channel: {
type: Number,
},
demo: {
type: String,
},
});
const ResourceMissingChannelSchema = new Schema({
channel: {
type: Number,
},
demo: {
type: String,
},
});
const Resource = model('Resource', ResourceSchema);
const ResourceMissingChannel = Resource.discriminator('MissingChannel', ResourceMissingChannelSchema);
ResourceMissingChannel.schema.remove('channel');
const [z0] = await Promise.all([
ResourceMissingChannel.create({
channel: 456,
demo: 'hello world 4',
}),
]);
ResourceMissingChannel.schema.add({
channel: {
type: Number,
}
});
const [x, y, z] = await Promise.all([
Resource.create({
channel: 123,
demo: 'hello world 1',
}),
Resource.create({
channel: 234,
demo: 'hello world 2',
}),
ResourceMissingChannel.create({
channel: 456,
demo: 'hello world 3',
}),
]);
await Resource.updateOne(
{
_id: x._id
}, {
$unset: {
channel: 1,
}
});
const results = await Resource
.find({})
.lean()
.exec();
return results;
})().then(
async (result) => {
await agent.stop();
process.exit(0);
},
async (_) => {
console.log(_);
await agent.stop();
process.exit(1);
}
);