Skip to content

Commit 0e04798

Browse files
committed
Update to 4.33.4
Update to 4.33.4
1 parent b25114a commit 0e04798

6 files changed

+76
-60
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# 更新记录
22

3+
## 2018-2-23
4+
* 修复部分内部链接
5+
* 同步官方最新文档版本 4.33.4
6+
37
## 2018-1-22
48
* 同步官方最新文档版本 4.31.2
59

getting-started.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Sequelize 可通过 NPM 和 Yarn 获得。
99
$ npm install --save sequelize
1010

1111
# 还有以下之一:
12-
$ npm install --save pg@6 pg-hstore #pg@7 当前不支持
12+
$ npm install --save pg pg-hstore
1313
$ npm install --save mysql2
1414
$ npm install --save sqlite3
1515
$ npm install --save tedious // MSSQL

migrations.md

+18-18
Original file line numberDiff line numberDiff line change
@@ -35,26 +35,26 @@ $ node_modules/.bin/sequelize init
3535

3636
```json
3737
{
38-
development: {
39-
username: 'root',
40-
password: null,
41-
database: 'database_development',
42-
host: '127.0.0.1',
43-
dialect: 'mysql'
38+
"development": {
39+
"username": "root",
40+
"password": null,
41+
"database": "database_development",
42+
"host": "127.0.0.1",
43+
"dialect": "mysql"
4444
},
45-
test: {
46-
username: 'root',
47-
password: null,
48-
database: 'database_test',
49-
host: '127.0.0.1',
50-
dialect: 'mysql'
45+
"test": {
46+
"username": "root",
47+
"password": null,
48+
"database": "database_test",
49+
"host": "127.0.0.1",
50+
"dialect": "mysql"
5151
},
52-
production: {
53-
username: process.env.PROD_DB_USERNAME,
54-
password: process.env.PROD_DB_PASSWORD,
55-
database: process.env.PROD_DB_NAME,
56-
host: process.env.PROD_DB_HOSTNAME,
57-
dialect: 'mysql'
52+
"production": {
53+
"username": "root",
54+
"password": null,
55+
"database": "database_test",
56+
"host": "127.0.0.1",
57+
"dialect": "mysql"
5858
}
5959
}
6060
```

raw-queries.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,7 @@ sequelize.query('SELECT * FROM users WHERE name LIKE :search_name ',
7373

7474
## 绑定参数
7575

76-
绑定参数就像替换。 除非替换被转义并在查询发送到数据库之前通过后续插入到查询中,而将绑定参数发送到SQL查询文本之外的数据库。 查询可以具有绑定参数或替换。
77-
78-
只有SQLite和PostgreSQL支持绑定参数。 其他方言会将它们插入到SQL查询中,就像替换一样。 绑定参数由 `$1, $2, ... (numeric)``$key (alpha-numeric)` 引用。这是独立于方言。
76+
绑定参数就像替换。 除非替换被转义并在查询发送到数据库之前通过后续插入到查询中,而将绑定参数发送到SQL查询文本之外的数据库。 查询可以具有绑定参数或替换。绑定参数由 `$1, $2, ... (numeric)``$key (alpha-numeric)` 引用。这是独立于方言的。
7977

8078
* 如果传递一个数组, `$1` 被绑定到数组中的第一个元素 (`bind[0]`)。
8179
* 如果传递一个对象, `$key` 绑定到 `object['key']`。 每个键必须以非数字字符开始。 `$1` 不是一个有效的键,即使 `object['1']` 存在。

upgrade-to-v4.md

+51-35
Original file line numberDiff line numberDiff line change
@@ -124,59 +124,75 @@ Sequelize V4 是一个重要版本,它引入了新的功能和突破性的变
124124
- 原始参数 where, order 和 group 比如 `where: { $raw: '..', order: [{ raw: '..' }], group: [{ raw: '..' }] }` 删除以防止SQL注入攻击。
125125
- `Sequelize.Utils` 不再是公共API的一部分,使用它自己承担风险。
126126
- `Hooks` 现在应返回 promise。 不支持回调。
127-
- `include` 总是一个数组
127+
- `required` 内部的 include 不会传播 include 链。
128128
129-
之前:
129+
要获得 v3 兼容的效果,您需要在包含的 include 上设置 `required`
130+
131+
以前:
132+
130133
```js
131-
User.findAll({
134+
user.findOne({
132135
include: {
133-
model: Comment,
134-
as: 'comments'
136+
model: project,
137+
include: {
138+
model: task,
139+
required: true
140+
}
135141
}
136-
})
142+
});
137143
```
138-
144+
139145
现在:
146+
140147
```js
141-
User.findAll({
142-
include: [{
143-
model: Comment,
144-
as: 'comments'
145-
}]
146-
})
147-
```
148-
149-
- `where``include` 中不会使这个 `include` 及其所有父节点都被 `required`。你可以使用下面的 `beforeFind` 全局 Hook 来保持以前的行为:
148+
User.findOne({
149+
include: {
150+
model: Project,
151+
required: true,
152+
include: {
153+
model: Task,
154+
required: true
155+
}
156+
}
157+
});
150158
151-
```js
152-
function whereRequiredLikeInV3(modelDescriptor) {
153-
if (!modelDescriptor.include) {
154-
return false;
159+
User.findOne({
160+
include: {
161+
model: Project,
162+
required: true,
163+
include: {
164+
model: Task,
165+
where: {type: 'important'} //其中 required 默认为 true
166+
}
155167
}
168+
});
169+
```
156170
157-
return modelDescriptor.include.some(relatedModelDescriptor => {
158-
const childDescriptorRequired = whereRequiredLikeInV3(
159-
relatedModelDescriptor,
160-
);
171+
或者,您可以添加 `beforeFind` hook 来获得兼容 v3 的行为 -
161172
162-
if (
163-
(relatedModelDescriptor.where || childDescriptorRequired) &&
164-
typeof relatedModelDescriptor.required === 'undefined'
165-
) {
166-
relatedModelDescriptor.required = true;
173+
```js
174+
function propagateRequired(modelDescriptor) {
175+
let include = modelDescriptor.include;
176+
177+
if (!include) return false;
178+
if (!Array.isArray(include)) include = [include];
179+
180+
return include.reduce((isRequired, descriptor) => {
181+
const hasRequiredChild = propogateRequired(descriptor);
182+
if ((descriptor.where || hasRequiredChild) && descriptor.required === undefined) {
183+
descriptor.required = true;
167184
}
168-
169-
return relatedModelDescriptor.required;
170-
});
185+
return descriptor.required || isRequired;
186+
}, false);
171187
}
172188
173189
const sequelize = new Sequelize(..., {
174190
...,
175191
define: {
176192
hooks: {
177-
beforeFind: whereRequiredLikeInV3,
178-
},
179-
},
193+
beforeFind: propagateRequired
194+
}
195+
}
180196
});
181197
```
182198

usage.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const sequelize = new Sequelize('database', 'username', 'password', {
1414

1515
```js
1616
const sequelize = new Sequelize('database', 'username', 'password', {
17-
dialect: 'mysql'
17+
dialect: 'mysql',
1818
host: "my.server.tld",
1919
port: 9821,
2020
})
@@ -198,8 +198,6 @@ const sequelize = new Sequelize('database', 'username', 'password', {
198198
})
199199
```
200200

201-
**注意:** `pg@^7.0.0` 当前不被支持.
202-
203201
### MSSQL
204202

205203
MSSQL 的库是 `tedious@^1.7.0` 你只需要定义方言:

0 commit comments

Comments
 (0)