无法使用循环填充MongoDB数据库

时间:2020-03-21 18:30:28

标签: node.js mongodb mongoose

我正在构建一个约会计划应用程序(Node,MongoDB,Mongoose),并且在尝试使用约会槽填充数据库时遇到了麻烦。 这是我想要做的(简化以节省空间):

const mongoose = require("mongoose");

const Schema = mongoose.Schema;
const ApptSchema = new Schema({
  count: { type: Number, required: true },
});

const Appt = mongoose.model("Appt", ApptSchema);

require("dotenv").config();

mongoose.connect(process.env.MONGODB_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useCreateIndex: true
});
mongoose.connection.on("connected", () => {
  console.log("Database connection successful!");
});

let count = 1;

while (count < 10) {
  const appt = new Appt({count: count});
  appt.save((err, docs) => {
    console.log("save callback reached")
  })

我确定这是基于对save函数的工作方式的误解...我在console.log循环的顶部放了一个while语句,发现它只是永远运行,永远不要点击save函数。在数据库中查看确认没有任何保存。另一个有趣的地方:如果我复制while循环的内容并将其放在循环开始之前,它仍然不会保存。 我对save函数的工作方式缺少什么?如何实现目标?

编辑:所以我现在意识到这是因为save函数是异步的,但是我不确定如何解决该问题……也许可以构建所有Appt对象并推送将它们添加到while循环中的列表中,然后像这样一次将它们全部添加到数据库中?

const appts = [all the Appt objects]
Appt.collection.insert(appts, function (err, docs) {
      if (err){ 
          return console.error(err);
      } else {
        console.log("Multiple documents inserted to Collection");
      }
    }); 

0 个答案:

没有答案