如何写一个返回Promise的mongodb插入动作?
发布于 9 年前 作者 ilovelll 6468 次预览 最后一次回复是 9 年前 来自 问答
自己写代码写着玩,把callback形式的module改成了Promise的方式,但是执行一直报这个错误
name: 'MongoError', message: 'topology was destroyed' }, 遂来这里请教
贴代码如下:
const getConn = new Promise((resolve, reject) => {
MongoClient.connect(url, (err, db) => {
if (err) reject(new Error('数据库连接出错'))
resolve(db)
})
})
exports.insertDoc = data => {
return new Promise((resolve, reject) => {
getConn.then(db => {
let collection = db.collection('meizitu')
collection.insertOne(data, (err, result) => {
if (err) {
if (err.code == 11000) {
result = { ok: -1, msg: "数据库已抓取,请勿重复抓取" }
} else {
console.log("数据库插入出错: ", err)
result = { ok: -1, msg: "DB ERROR!" }
}
}
db.close()
result.result ? resolve(result.result) : resolve(result)
})
}).catch(err =>{
console.log(err)
})
})
2 回复
附加信息: 1. 这个insertDoc() 有多进程执行,并且根据返回信息会重复执行(就是开多个线程,每个线程顺序执行多个任务)。
官方也不推荐关