Node.js 节点脚本未完成

Node.js 节点脚本未完成,node.js,mongodb,npm,es6-promise,npm-scripts,Node.js,Mongodb,Npm,Es6 Promise,Npm Scripts,我有一个简单的脚本将数据转储到db中,我正在结合npm脚本使用它。我试图在节点应用程序服务器启动之前将数据转储到数据库中。但是转储脚本永远不会完成,因此服务器启动脚本不会启动。这是我的转储脚本- const mongodb = require('mongodb') , fs = require('fs') , MongoClient = mongodb.MongoClient , client = new MongoClient(`mongodb://localhost:27017/

我有一个简单的脚本将数据转储到db中,我正在结合npm脚本使用它。我试图在节点应用程序服务器启动之前将数据转储到数据库中。但是转储脚本永远不会完成,因此服务器启动脚本不会启动。这是我的转储脚本-

const mongodb = require('mongodb')
  , fs = require('fs')
  , MongoClient = mongodb.MongoClient
  , client = new MongoClient(`mongodb://localhost:27017/admin`, { useUnifiedTopology: true })
  , docs = fs.readFileSync(`${process.cwd()}/app/scripts/records.json`)

client.connect().then(cl => {
  const dbObj = cl.db('dumpdb')
  dbObj.collection(`loc_biz_hrs`).insertMany(JSON.parse(docs)).then(result => {
    console.log(`${result.insertedCount} records inserted`)
  })
})
下面是我如何使用npm脚本来执行它-

"scripts": {
    "start": "node app/scripts/records.js && nodemon --exec babel-node index.js",
    "test": "test"
}

它只显示在终端中插入的35755条记录中,并卡在其中,不执行脚本的
index.js
部分。

尝试同时使用npm包 npm i


"scripts": {
    "start": "react-scripts start",
    "dev": ""concurrently \"node app/scripts/records.js\" \"nodemon --exec babel-node index.js\""
}

您没有使用
cl.close()
关闭连接,请尝试以下操作:

const mongodb=require('mongodb'))
,fs=require('fs')
,MongoClient=mongodb.MongoClient
,客户端=新的MongoClient(`mongodb://localhost:27017/admin`,{useUnifiedTopology:true})
,docs=fs.readFileSync(`${process.cwd()}/app/scripts/records.json`)
客户
.connect()
.然后(cl=>{
const dbObj=cl.db('dumpdb');
dbObj
.collection(`loc_biz_hrs`)
.insertMany(JSON.parse(docs))
。然后(结果=>{
log(`${result.insertedCount}记录插入`);
cl.关闭();
}).catch(错误=>{
console.log(错误);
cl.关闭();
})
})
.catch(错误=>{
console.log(错误);
});

谢谢,这确实解决了问题,但是进程未完成对我来说仍然是个谜。那么,如果是进程的话。exit()可以帮助在插入记录后完成