粗大的内捧猛烈进出小视频,日本成人精品视频一区,在线播放亚洲成人av,精品人妻少妇嫩草av专区,亚洲AV永久久久久久久浪潮,性导航app精品视频,九九热精品免费视频,一本一本大道香蕉久在线播放

        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 { // 注冊失敗執行的操作 }
        }
        藍藍設計www.xintaizi.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

        日歷

        鏈接

        個人資料

        藍藍設計的小編 http://www.xintaizi.com

        存檔