Mongoose 阻止节点脚本结束
Posted
技术标签:
【中文标题】Mongoose 阻止节点脚本结束【英文标题】:Mongoose preventing a node script from ending 【发布时间】:2019-12-02 01:49:19 【问题描述】:我是 Node.js 的新手。
我有一个脚本,可以进行一堆异步调用,将结果写入数据库,然后应该完成。但是,当逻辑完成执行时,脚本只是坐在那里并且不会退出。我必须 ^c 或明确关闭猫鼬连接。如果我这样做,它就会退出。
确定所有结果都已保存并关闭连接的有效方法是什么?有没有办法在所有连接完成后自动关闭?我需要自己跟踪它们吗?
即使我这样做了,它仍然会在大量任务上崩溃。所以很明显他们还没有完成。
使用同步编程很容易。开始时打开,结束时关闭。但是对于异步,到处都有分叉。我怎么知道一切都结束了?您是否跟踪数据结构中的所有连接?您是否依赖连接超时?必须有一种有效的方法来做到这一点。
谢谢
【问题讨论】:
也许这是你的解决方案***.com/questions/8813838/… 不幸的是 Sam 问题... (node:20122) UnhandledPromiseRejectionWarning: MongoError: server instance pool was destroy 【参考方案1】:这会有所帮助。
const mongoose = require('mongoose')
const Schema = mongoose.Schema
mongoose.connect("mongodb://localhost/stack-overflow", useNewUrlParser: true )
var userSchema = new Schema(
username:
type: String,
required: true,
unique: true,
trim: true,
minlength: 3
,
,
timestamps: true
);
const User = mongoose.model('User', userSchema);
// This part below is the answer
async function run()
try
const result = await User.find()
console.log(result)
exitMe();
catch(error)
console.log(error)
function exitMe()
mongoose.connection.close()
process.exit();
run()
【讨论】:
以上是关于Mongoose 阻止节点脚本结束的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行 Mongodb 的 Mongoose 中执行脚本?