Sequelize, the JavaScript ORM, in practice

<table class="javascript"><tr class="li1">
<td class="ln"><pre class="de1">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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258

  Sequelize claims to supports MySQL PostgreSQL and SQLite. Sequelize docs explain the first steps with the JavaScript ORM. initialize a database connection then a few models without worrying about primary or foreign keys   sequelize Sequelize Project sequelize.   title       Sequelize.   description Sequelize. Task sequelize.   description Sequelize.   deadline    Sequelize. Project.Task   Next create instances and persist them query the database etc.   task Task.title task. 'very important task' task.   .err         .         tasks Task. where   .err         .         Sequelize uses promises so you can chain error and success callbacks and it all plays well with unit tests.   that is pretty well documented but the Sequelize documentation only covers the basic usage. you start using Sequelize real world projects finding the right way to implement a feature gets trickier.   File Structure   All the examples the Sequelize documentation show all model declarations grouped a single file. a project reaches production size is not a viable approach. alternative is to models from a module using sequelize..   problem is that relationships rely on several models. you declare a relationship models from both sides of the relationship must already be imported. should not model files from other model files because of Node. module caching policy more on that later on instead you can define relationships a standalone file.   is the file structure we     sequelize config     PhoneNumber Task User         t have to repeat the Sequelize initialization.   models require User models.   user User. first_name last_name   The problem is when you require the modelsindex. file Node may use a cached version of the module... not   From nodejs.   Multiple calls to require may not cause the module code to be executed multiple times. ... Modules are cached based on their resolved filename. modules may resolve to a different filename based on the location of the calling module loading from node_modules folders it is not a guarantee that require will always the exact same object it would resolve to different files. means that using require to the models may create more than one connection to the database. avoid that the models variable must be somehow singletonesque. can be easily achieved you   models.models     models     User Taskst use prototypebased inheritance how can a User instance gain access to the User Digging into the Sequelize source brings the protected __factory to the light. all undocumented knowledge it is now possible to write the countTasks instance method   countTasks   .__factory... where user_id . Note that Task. returns a promise so countTasks also returns a promise   user..nbTasks   Extending models a.. Behaviors   What you need to reuse several methods across several models Sequelize doesns quite easy to implement. now you   +|+$/g,"")    // trim whitespace ]+/g,"-")   .FriendlyUrlfirst_namelast_name Tasks   JohnDoe john_doe       find findAll */ })   ve found it much more convenient to use a generic resynchronizing module like async which provides the wonderful async. utility. method lets you list tasks together with dependencies and determines which task can be run parallel and which must be run series.   .   user next     User.id.next     tasks next     Tasks. where user_id user. .next   err results     user results.     tasks results.     Notice the complete method which is an alternative to the two success and error callbacks. accepts a callback with the signature err res which is more natural the Node. world and compatible with async.     One thing ORMs are usually good at is minimizing queries. offers a prefetching feature allowing to group two queries a single one using a JOIN. instance you want to retrieve a Task together with the related User write the query as follows   Task. where id id include   .err         .task     task.   This is another undocumented feature although the documentation should be updated soon.     Sequelize provides a migration command line utility. because it only allows modifying the model using Sequelize commands and not calling any asynchronous method of your own migration command falls .   of now we       util LEFT JOIN `User` ON `Task`.`userid` `User`.`id` WHERE `User`.`last_name` s   d     t recommend it production just yet you版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)