mongoose保存數(shù)據(jù):
const save = new Model(data).save()
如果成功,則可以獲取到保存在數(shù)據(jù)庫的值,但是如果保存數(shù)據(jù)失敗,則會(huì)拋出異常,好在save可以傳入一個(gè)回調(diào)函數(shù),用法如下:
const save = new Model(data).save((err, result)=>{ if(err){ // 保存失敗執(zhí)行的操作
}else { // 保存成功執(zhí)行的操作
}
})
我們希望根據(jù)結(jié)果獲取到不同的值,但是此時(shí)save返回的是undefined,因?yàn)閟ave中的回調(diào)函數(shù)是一個(gè)異步操作
解決方法:
使用try catch:
try{
const save = await new Model(data).save();
// 保存成功執(zhí)行的操作 return ... }catch(err){
// 保存失敗執(zhí)行的操作 return ... }
注意:在async函數(shù)中才可以這么使用,因?yàn)閍wait只能用在async函數(shù)中
示例:(注冊功能)
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();
// 其他操作,如發(fā)送注冊郵件
return { success: true }
}catch(err){
return { success: false, message: "用戶名或密碼錯(cuò)誤" }
}
}
}
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 { }
}
藍(lán)藍(lán)設(shè)計(jì)( www.wnxcall.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)