Skip to content

Navigation Menu

Sign in
Sign up

60.[半夜改bug] mongoose 的 createConnection 和 connect #65

Open

Description

[半夜改bug] mongoose 的 createConnection 和 connect

代码出 bug 大半夜的被 mongoose 的连接函数搞惨

因为代码里 mongo 数据库的连接方式的代码被改成了 const db = mongoose.createConnection(mongo.url(), mongoOptions),所以在调用数据插入函数时 Promise 的 resolve 和 reject 都没有返回,也没有打印任何异常信息。

查了业务逻辑、本地 mongo 的读写都没问题,最后发现是 mongo 的连接文件 connect.js 被修改了。

因为用了 mongoose.createConnection 所以此时的 model 应该是 db.mongoose.model('Product')

而之前的是用默认的 mongoose.connect() 方式连接的数据库,获取 model 的代码也应该是 const ProductModel = db.mongoose.model('Product', ProductSchema)

数据库的链接方式被改了,model 没有变,所以增删改查的代码一直被挂起,没有任何的返回。😂😂😂

API和示例代码

Mongoose#connect

API

Opens the default mongoose connection.

Mongoose#connect 开启默认的 mongoose 连接。如果只连接一个库,就用这个默认的。

1.连接数据库 mongo.js

const db = mongoose.connect(mongo.url(), mongoOptions)
exports.mongoose = db
  1. CRUD操作
const db = require('./mongo.js')
const NameSchema = new Schema({
 name: String
})
const NameModel = db.mongoose.model('Name', NameSchema)
class NameDAO = {
 ...
}

Mongoose#createConnection

API里是这样写的

Each connection instance maps to a single database. This method is helpful when mangaging multiple db connections.

Mongoose#createConnection 是适合于多个数据库连接的方式

1.连接数据库 mongo.js

const db = mongoose.createConnection(mongo.url(), mongoOptions)
const Schema = mongoose.Schema
const NameSchema = new Schema({
 name: String
})
db.model('Name', NameSchema)
exports.mongoose = db
  1. CRUD操作
const db = require('./mongo.js')
const NameModel = db.mongoose.model('Name')
class NameDAO = {
 ...
}

最后

要多看 API 文档 。。。。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Projects

No projects

Milestone

No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    AltStyle によって変換されたページ (->オリジナル) /