-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path3-sequelize.js
More file actions
78 lines (69 loc) · 1.5 KB
/
3-sequelize.js
File metadata and controls
78 lines (69 loc) · 1.5 KB
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
const Sequelize = require('sequelize');
const { db } = require('config');
const DISABLE_SEQUELIZE_DEFAULTS = {
timestamps: false,
freezeTableName: true,
};
const { DataTypes } = Sequelize;
const sequelize = new Sequelize({
...db,
username: db.user,
dialect: 'postgres',
operatorsAliases: false,
});
const Category = sequelize.define('category', {
name: {
type: DataTypes.STRING,
primaryKey: true,
},
allowComments: {
type: DataTypes.BOOLEAN,
},
}, DISABLE_SEQUELIZE_DEFAULTS);
const CategoryItem = sequelize.define('categoryItem', {
name: {
type: DataTypes.STRING,
primaryKey: true,
},
categoryName: {
type: DataTypes.STRING,
primaryKey: true,
},
}, DISABLE_SEQUELIZE_DEFAULTS);
CategoryItem.belongsTo(Category, {
foreignKey: 'categoryName',
});
Category.hasMany(CategoryItem, {
foreignKey: 'categoryName',
});
Category.findOne({
attributes: ['name', 'allowComments'],
include: [
{
model: CategoryItem,
where: {
categoryName: 'category-50000',
},
attributes: ['name'],
},
],
}).then((rows) => {
console.log('query returned results: ', rows.toJSON());
sequelize.close();
});
// Category.findOne({
// where: {
// name: 'category-50000',
// },
// attributes: ['name', 'allowComments'],
// include: [
// {
// model: CategoryItem,
// attributes: ['name'],
// },
// ],
// }).then((rows) => {
// console.log('query returned results: ', rows.toJSON());
//
// sequelize.close();
// });