猿问

在 node.js 和 mongoose 建立 mongodb 连接之前,如何拒绝数据模式?

我不明白特定的异步 javascript 代码:我有几行由 node.js 运行的非常简单的 javascript,我在其中查询本地 mongoDB,主要是这样做的:

  • 需要猫鼬

  • 承诺连接到数据库

mongoose.connect("...url to my local mongoDB...")
     .then(console.log("Connected to DB..."))
  • 创建模式

  • 从模式创建模型

  • 定义一个异步函数来创建一个新对象,将其保存为 mongoDB 中的文档,并控制台记录尝试保存文档后返回的结果。

我不明白的是 console.log("Connect to DB") 和 console.log(document.save() 的结果) 的顺序:确实,当保存没有错误时,顺序似乎没问题:我首先有“连接到数据库...”,然后是返回的保存文档:

但是当由于不遵守某些要求而出现数据验证错误时,则在“连接到数据库”之后打印“连接到数据库”:

http://img2.mukewang.com/64671bf500010dfc06510051.jpg

关于代码的结构,我不明白为什么在打印错误后打印“已连接到数据库...”。我怀疑异步代码是原因,但我不明白为什么。这几行非常简单的代码来自“使用 Mosh 编程”课程,我们可以在他的控制台上看到完全相同的行为。


更多代码细节:


    const mongoose = require("mongoose")

    mongoose

      .connect(my_mongo_db_url)

      .then(() => console.log("Connected to DB"))

      .catch(err => console.log("Could not connect to DB"))

    

    const courseSchema = new mongoose.Schema({ ...course schema... })

    const Course= mongoose.model("Course", courseSchema )

    

    async function createCourse(){

      const course = new Course({ ...new course values... })

      try { const result = await course.save()}

      catch (err) { console.log(err.message)}

    }

    

    createCourse()


喵喔喔
浏览 132回答 0
0回答

炎炎设计

我在这里复制回答我问题的@jonrsharpe 评论:“对 course.save 的调用可能在建立连接之前执行,但其内部实现等待连接: https: //mongoosejs.com/docs/connections.html#buffering ”
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答