<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

          存檔

          女同久久| 国产精品久久久天天影视| 久久国产精品一区二区| 久久久久黑人强伦姧人妻| 97精品依人久久久大香线蕉97| 久久婷婷成人综合色综合| 无码任你躁久久久久久老妇| 久久综合久久自在自线精品自 | 国产ww久久久久久久久久| 久久频这里精品99香蕉久| 女人香蕉久久**毛片精品| 色欲久久久天天天综合网精品| 久久中文字幕视频、最近更新| 久久久久久久波多野结衣高潮 | 久久这里有精品视频| 久久天天躁狠狠躁夜夜躁2014| 久久综合久久综合久久| 久久精品国产色蜜蜜麻豆| 欧美精品丝袜久久久中文字幕 | 精品一二三区久久aaa片| 精品久久久久国产免费| 国产91久久综合| 久久久中文字幕| 久久大香香蕉国产| 国产69精品久久久久99| 久久国产精品99久久久久久老狼| 狠狠色婷婷久久综合频道日韩| 午夜精品久久久内射近拍高清| 国产亚洲精午夜久久久久久| 久久99国产精一区二区三区 | 伊人久久综在合线亚洲2019| 99久久精品国产一区二区蜜芽| 久久99国产综合精品免费| 亚洲国产精品人久久| 一本色道久久88加勒比—综合| 午夜精品久久久久久久久| 97精品依人久久久大香线蕉97| 亚洲香蕉网久久综合影视| 久久天天躁狠狠躁夜夜网站| 国产婷婷成人久久Av免费高清 | 久久精品中文字幕有码|