<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • 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.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

    日歷

    鏈接

    個人資料

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

    存檔

    主站蜘蛛池模板: 亚洲视频在线精品| 伊人久久无码精品中文字幕| 欧美日韩国产精品| 国产精品18久久久久久vr| 欧美精品91欧美日韩操| 国内精品久久久久影院免费| 中国精品18videosex性中国| 国产精品一区在线观看你懂的| 99国产精品国产精品九九| 日本精品一区二区三区四区| 国产成人综合精品一区| 国产AV午夜精品一区二区三区| 亚洲精品乱码久久久久久蜜桃图片 | 国产精品欧美久久久久无广告 | 亚洲精品成人在线| 99久久精品免费看国产一区二区三区 | 久久成人精品视频| 国产亚洲色婷婷久久99精品| 亚洲中文字幕久久精品无码APP | 久久青青草原精品影院| 国产精品久久久久久吹潮| 亚洲综合精品香蕉久久网| 久久这里有精品视频| 国产激情精品一区二区三区| 久草视频在线这里精品| 92国产精品午夜福利| 久久精品午夜一区二区福利| 在线涩涩免费观看国产精品| 欧美成人精品高清在线播放| 国产亚洲色婷婷久久99精品91| 91精品国产高清久久久久久91| 国产精品久久久久9999高清| 国产精品露脸国语对白| 国产精品视频一区二区噜噜 | 亚洲午夜精品第一区二区8050| 久久久久国产精品麻豆AR影院 | 国产精品无套内射迪丽热巴| 久久久久亚洲精品天堂| 欧美日韩人妻精品一区二区在线| 亚洲∧v久久久无码精品| 无码人妻精品一区二区三区久久|