Node.js 节点脚本未完成
我有一个简单的脚本将数据转储到db中,我正在结合npm脚本使用它。我试图在节点应用程序服务器启动之前将数据转储到数据库中。但是转储脚本永远不会完成,因此服务器启动脚本不会启动。这是我的转储脚本-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/
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()可以帮助在插入记录后完成