Skip to content

Commit 5d17b74

Browse files
committed
add mongo connection
1 parent 9b42469 commit 5d17b74

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# [半夜改bug] mongoose 的 createConnection 和 connect
2+
3+
> 代码出 bug 大半夜的被 mongoose 的连接函数搞惨
4+
5+
因为代码里 mongo 数据库的连接方式的代码被改成了 `const db = mongoose.createConnection(mongo.url(), mongoOptions)`,所以在调用数据插入函数时 `Promise` 的 resolve 和 reject 都没有返回,也没有打印任何异常信息。
6+
7+
查了业务逻辑、本地 mongo 的读写都没问题,最后发现是 mongo 的连接文件 connect.js 被修改了。
8+
9+
因为用了 `mongoose.createConnection` 所以此时的 model 应该是 `db.mongoose.model('Product')`
10+
11+
而之前的是用默认的 `mongoose.connect()` 方式连接的数据库,获取 model 的代码也应该是 `const ProductModel = db.mongoose.model('Product', ProductSchema)`
12+
13+
数据库的链接方式被改了,model 没有变,所以增删改查的代码一直被挂起,没有任何的返回。😂😂😂
14+
15+
16+
## API和示例代码
17+
18+
### Mongoose#connect
19+
20+
API
21+
22+
> Opens the default mongoose connection.
23+
24+
`Mongoose#connect` 开启默认的 mongoose 连接。如果只连接一个库,就用这个默认的。
25+
26+
1.连接数据库 mongo.js
27+
28+
```js
29+
const db = mongoose.connect(mongo.url(), mongoOptions)
30+
exports.mongoose = db
31+
```
32+
33+
2. CRUD操作
34+
35+
```js
36+
const db = require('./mongo.js')
37+
const NameSchema = new Schema({
38+
name: String
39+
})
40+
41+
const NameModel = db.mongoose.model('Name', NameSchema)
42+
43+
class NameDAO = {
44+
...
45+
}
46+
```
47+
48+
49+
### Mongoose#createConnection
50+
51+
API里是这样写的
52+
53+
> Each connection instance maps to a single database. This method is helpful when mangaging multiple db connections.
54+
55+
`Mongoose#createConnection` 是适合于多个数据库连接的方式
56+
57+
1.连接数据库 mongo.js
58+
59+
```js
60+
const db = mongoose.createConnection(mongo.url(), mongoOptions)
61+
const Schema = mongoose.Schema
62+
const NameSchema = new Schema({
63+
name: String
64+
})
65+
db.model('Name', NameSchema)
66+
exports.mongoose = db
67+
```
68+
69+
2. CRUD操作
70+
71+
```js
72+
const db = require('./mongo.js')
73+
const NameModel = db.mongoose.model('Name')
74+
75+
class NameDAO = {
76+
...
77+
}
78+
```
79+
80+
81+
## 最后
82+
83+
要多看 API 文档 。。。。
84+
85+

0 commit comments

Comments
 (0)