NPM命令删除mongo数据库,使用" echo"不工作

时间:2017-11-27 17:16:16

标签: node.js mongodb npm echo npm-scripts

我试图创建一个从我的mongo实例中删除数据库的npm命令。

当我将这行代码直接粘贴到我的shell中时,它可以工作,并提供以下输出:

> echo 'db.dropDatabase()' | mongo musicappdb

MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017/musicappdb
MongoDB server version: 3.4.10
{ "ok" : 1 }
bye

然而,当我从我的npm脚本运行它时,它被定义为这样

scripts: {
     ...
     "drop-db": "echo 'db.dropDatabase()' | mongo musicappdb",
     ...
  },

我得到了

> echo "db.dropDatabase()" | mongo musicappdb

MongoDB shell version v3.4.10
connecting to: mongodb://127.0.0.1:27017/musicappdb
MongoDB server version: 3.4.10
db.dropDatabase()
bye

数据库 NOT 被删除。

为什么我通过npm发出命令时行为不正常?

3 个答案:

答案 0 :(得分:0)

嘿,看到这篇文章可能会有所帮助:

http://antrikshy.com/blog/run-mongodb-automatically-nodejs-project

只是测试:

'start mongo admin --eval "db.dropDatebase()" '

答案 1 :(得分:0)

"drop-db": "echo 'db.dropDatabase()' | mongo myDB"

这对我有用

输出为

MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/myDB?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("44d9deb8-6de1-49ff-8532-24cf2ae5247b") }
MongoDB server version: 4.0.9
{ "ok" : 1 }
bye

答案 2 :(得分:0)

如果有人在使用 Docker 容器:

docker exec -it mongodb_container sh -c "mongo db_name --eval 'db.dropDatabase()'"