节点脚本没有完成

node script not getting completed

我有一个简单的脚本可以将数据转储到数据库中,我将它与 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 records inserted 中并卡在那里并且不执行脚本的 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
  , 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`);
        cl.close();
      }).catch(error => {
        console.log(error);
        cl.close();
      })
  })
  .catch(error => {
    console.log(error);
  });