【问题标题】:Mongoose preventing a node script from endingMongoose 阻止节点脚本结束
【发布时间】:2019-12-02 01:49:19
【问题描述】:

我是 Node.js 的新手。

我有一个脚本,可以进行一堆异步调用,将结果写入数据库,然后应该完成。但是,当逻辑完成执行时,脚本只是坐在那里并且不会退出。我必须 ^c 或明确关闭猫鼬连接。如果我这样做,它就会退出。

确定所有结果都已保存并关闭连接的有效方法是什么?有没有办法在所有连接完成后自动关闭?我需要自己跟踪它们吗?

即使我这样做了,它仍然会在大量任务上崩溃。所以很明显他们还没有完成。

使用同步编程很容易。开始时打开,结束时关闭。但是对于异步,到处都有分叉。我怎么知道一切都结束了?您是否跟踪数据结构中的所有连接?您是否依赖连接超时?必须有一种有效的方法来做到这一点。

谢谢

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案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()

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2015-12-03
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多