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

时间:2017-10-15 14:38:21

标签: node.js mongodb mongoose

我试图通过我运行npm run的脚本(JS)来填充我的MongoDB数据库。

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..

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

1 个答案:

答案 0 :(得分:2)

在致电Left (SomeException EmptyListException)之前,您的代码并未等待 Try Using Client As New WebClient Client.DownloadFile(sExtract, sDownloadTo) End Using Catch ex As Exception Debug.Print("Failed: " + sExtract) End Try dropDatabase()完成。

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

process.exit(0)

但是,您可能不应该致电async,但这是一个单独的问题。