node.js - 我的 Mongoose 数据播种脚本有什么问题?

标签 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: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e693958394d7a6839e878b968a83c885898b" rel="noreferrer noopener nofollow">[email protected]</a>",
    password: "foo",
    balance_cents: 100
  },
  {
    _id: "58c03ada8060197ca0b52d52",
    email: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="07727462753547627f666a776b622964686a" rel="noreferrer noopener nofollow">[email protected]</a>",
    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..

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

最佳答案

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

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

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

doBoth();

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

关于node.js - 我的 Mongoose 数据播种脚本有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46756227/

相关文章:

node.js - 是否可以忽略 docker 容器中已安装卷中的子文件夹(例如 node_module)?

node.js - 尝试代理到 : localhost:3000/api/graphql 时发生错误

node.js - 如何在 Mongoose 的数组中使用不同类型的模式?

json - 从 mongodb 中的 json 文件插入日期对象

mongoose - 架构数组路径的值无效

node.js - 使用 Angular Universal 在服务器端运行时找不到模块环境

node.js - 从 AWS dynamoDB 中的 JSON 数组中删除元素

javascript - 如何使用 node.js 获取推文

node.js - .exist 如何在 Mongoose 中工作

javascript - Mongoose - 将对象 ID 推送到 ObjectIds 数组