mongoose保存數據:
const save = new Model(data).save()
如果成功,則可以獲取到保存在數據庫的值,但是如果保存數據失敗,則會拋出異常,好在save可以傳入一個回調函數,用法如下:
const save = new Model(data).save((err, result)=>{ if(err){ // 保存失敗執行的操作
}else { // 保存成功執行的操作
}
})
我們希望根據結果獲取到不同的值,但是此時save返回的是undefined,因為save中的回調函數是一個異步操作
解決方法:
使用try catch:
try{
const save = await new Model(data).save();
// 保存成功執行的操作 return ... }catch(err){
// 保存失敗執行的操作 return ... }
注意:在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 { }
}
藍藍設計( ssll180.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務