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

    日歷

    鏈接

    個人資料

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

    存檔

    主站蜘蛛池模板: 亚洲综合精品网站| 国自产偷精品不卡在线| 日本VA欧美VA欧美VA精品| 国产精品gz久久久| 99久久免费国产精品热| 亚洲国产精品无码av| 久久综合精品国产一区二区三区| 午夜精品免费在线观看| 97r久久精品国产99国产精| 亚洲精品乱码久久久久久| 久久久久人妻一区精品果冻| 国产成人精品久久一区二区三区av | 国产亚洲精品无码专区| 久久这里只有精品首页| 国产精品网站在线观看免费传媒 | 欧美ppypp精品一区二区| 337P亚洲精品色噜噜| 久久精品国产99久久久| 亚洲人精品午夜射精日韩| 欧美精品免费专区在线观看| 国产线视频精品免费观看视频| 国产成人AV无码精品| 中文精品一卡2卡3卡4卡| 欧美精品888| 亚洲自偷自偷精品| 91国内揄拍国内精品对白不卡| 国产精品一级片| 91精品美女在线| 国产成人精品天堂| 国产在线精品网址你懂的| 国产精品天天影视久久综合网| 国产精品视频二区不卡| 国产精品涩涩涩视频网站| 国产福利91精品一区二区| 国产成人亚洲精品| 亚洲午夜精品久久久久久人妖 | 亚洲愉拍99热成人精品热久久| 亚洲精品无码AV中文字幕电影网站| 香港三级精品三级在线专区| 欧美激情精品久久久久久久九九九 | 久久精品国产一区二区|