我的Mongoose数据播种脚本有什么问题?

我正在尝试通过脚本(JS)填充我的MongoDB数据库与数据,通过运行npm run

 const mongoose = require('mongoose') const dbConf = require('../config/database.js') const User = require('../app/models/user.js') const Account = require('../app/models/account.js') mongoose.connect(dbConf.url, { useMongoClient: true }) mongoose.Promise = global.Promise const users = [ { _id: "58c039018060197ca0b52d4c", email: "user1@example.com", password: "foo", balance_cents: 100 }, { _id: "58c03ada8060197ca0b52d52", email: "user2@example.com", password: "foo", balance_cents: 50000 } ] const accounts = [ { name: "Postbank", iban: "1232423423", swift: "2444444" }, { name: "DKB", iban: "1234923423", swift: "6667898" }, { name: "Fidor", iban: "909873423", swift: "998733" } ] async function dropDatabase () { console.log('Removing User collection') await User.remove() console.log('Success!') } async function seedUsers () { console.log('Seeding users..') try { await User.insertMany(users) console.log('Success!') } catch(error) { console.log('Error:' + e) } } dropDatabase() seedUsers() process.exit(0) 

但它似乎并没有超越每个函数的await语句。 输出是:

 Removing User collection Seeding users.. 

数据库中没有对象。 我使用的是与在教程中find的完全相同的语法,并且无法理解为什么这不起作用。 任何想法的人? 我想这是一个非常愚蠢的错误,我现在看不到。 谢谢!

在调用process.exit(0)之前,您的代码不会等待dropDatabase()seedUsers()完成。

您需要将这两个调用包装在另一个可以等待完成的async方法中。

 async function doBoth() { await dropDatabase(); await seedUsers(); process.exit(0); } doBoth(); 

但是,你可能不需要调用process.exit(0) ,但这是一个单独的问题。