<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • mongoose中save無法獲取回調函數值的解決方法

          2018-7-18    seo達人

          如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

          mongoose保存數據:

          const save = new Model(data).save()
              
          • 1

          如果成功,則可以獲取到保存在數據庫的值,但是如果保存數據失敗,則會拋出異常,好在save可以傳入一個回調函數,用法如下:

          const save = new Model(data).save((err, result)=>{ if(err){ // 保存失敗執行的操作
              }else { // 保存成功執行的操作
              }
          
          })
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8

          我們希望根據結果獲取到不同的值,但是此時save返回的是undefined,因為save中的回調函數是一個異步操作

          解決方法:

          使用try catch:

          try{
              const save = await new Model(data).save();
              // 保存成功執行的操作 return ... }catch(err){
              // 保存失敗執行的操作 return ... }
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8

          注意:在async函數中才可以這么使用,因為await只能用在async函數中

          示例:(注冊功能)

          user.model.js

          const mongoose  = require("mongoose"); const port      = process.env.PORT || "8899"; const UserSchema = mongoose.Schema({
              userName: {
                  type: String,
                  unique: true },
              passWord: String,
              createTime: {
                  type: Date, default: Date.now()
              },
              updateTime: {
                  type: Date, default: Date.now()
              }
          }, {
              timestamps: {
                  createAt: "createTime",
                  updateTime: "updateTime" }
          });
          
          module.exports = mongoose.model("USER", UserSchema);
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25

          service.js

          const User = require("./user.model);
          class User{
              async login(user){
                      try{
                          const result = await new User(user).save();
                          // 其他操作,如發送注冊郵件
                          return { success: true }
                      }catch(err){
                          return { success: false, message: "用戶名或密碼錯誤" }
                      }
             }
          }
          moduel.exports = new User();
              
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13

          controller.js

          const server = require("./server); async login(){ // 首先獲取請求中攜帶的用戶信息 const result = await server.login(user);
              if(result.success){ // 注冊成功執行的操作 }else { // 注冊失敗執行的操作 }
          }
          藍藍設計m.sdgs6788.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://m.sdgs6788.com

          存檔

          久久99精品国产| 国产亚洲美女精品久久久| 国产成人综合久久精品红| 精品国产乱码久久久久软件| 日韩AV无码久久一区二区| 91精品免费久久久久久久久| 2021国内久久精品| 久久精品成人国产午夜| 一本久久免费视频| 国产精品va久久久久久久| 狠狠色婷婷久久综合频道日韩| 国产成人久久精品区一区二区| 久久亚洲国产精品五月天婷| 久久精品午夜一区二区福利 | 久久人人爽人人爽人人片AV麻烦| 浪潮AV色综合久久天堂| 久久久久国产一区二区| 久久99久久99精品免视看动漫| 久久久久亚洲精品天堂久久久久久 | 国产精品免费久久久久电影网| 一本一本久久a久久综合精品蜜桃| 国产激情久久久久影院小草| 久久精品人人槡人妻人人玩AV| 亚洲人成无码网站久久99热国产| 久久国产精品99精品国产987| 亚洲国产另类久久久精品| 久久久艹| 国产精品gz久久久| 97精品伊人久久久大香线蕉 | 亚洲乱码中文字幕久久孕妇黑人 | 亚洲综合伊人久久大杳蕉| 亚洲а∨天堂久久精品| 国产一区二区精品久久岳| 国产精品视频久久| 精品久久久噜噜噜久久久| 久久久噜噜噜久久中文福利| 精品久久久无码人妻中文字幕| 综合久久精品色| 久久久久久国产a免费观看黄色大片| 国产亚州精品女人久久久久久| 亚洲成色999久久网站|