/
toJSON.js
47 lines (37 loc) · 1.5 KB
/
toJSON.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
let rdb = require('rdb');
let resetDemo = require('./db/resetDemo');
let Order = rdb.table('_order');
let Customer = rdb.table('_customer');
let OrderLine = rdb.table('_orderLine');
let DeliveryAddress = rdb.table('_deliveryAddress');
Order.primaryColumn('id').guid();
Order.column('orderNo').string();
Order.column('customerId').string();
Customer.primaryColumn('id').guid();
Customer.column('name').string();
OrderLine.primaryColumn('id').guid();
OrderLine.column('orderId').string();
OrderLine.column('product').string();
DeliveryAddress.primaryColumn('id').guid();
DeliveryAddress.column('orderId').string();
DeliveryAddress.column('name').string();
DeliveryAddress.column('street').string();
Order.join(Customer).by('customerId').as('customer');
let line_order_relation = OrderLine.join(Order).by('orderId').as('order');
Order.hasMany(line_order_relation).as('lines');
let deliveryAddress_order_relation = DeliveryAddress.join(Order).by('orderId').as('order');
Order.hasOne(deliveryAddress_order_relation).as('deliveryAddress');
let db = rdb('postgres://rdb:rdb@localhost/rdbdemo');
module.exports = async function() {
try {
await resetDemo();
await db.transaction(async () => {
let order = await Order.getById('b0000000-b000-0000-0000-000000000000');
let json = await order.toJSON( /*strategy*/ );
//default strategy, expand all hasOne and hasMany relations
console.log(json);
});
} catch (e) {
console.log(e.stack);
}
}();