Sequelize, the JavaScript ORM, in practice

前端之家收集整理的这篇文章主要介绍了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 wesql files and a custom utility to run them in order.   sql queries   sql queries against the database. Here is an example:   util LEFT JOIN `User` ON `Task`.`userid` `User`.`id` WHERE `User`.`last_name` s   sql query. For strings,sequelize.constructor.Utils.escape() is your friend. For integers,util.format('d     required by a production-level ORM are there. However,I wouldn't recommend it production just yet you

猜你在找的JavaScript相关文章