我試圖在貓鼬中保存模型后回傳一個承諾。
這是用戶檔案的架構:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const UserSchema = new mongoose.Schema({
first_name:String,
last_name:String,
phone_number:String,
email:{type:String, unique:true, required:true, lowercase:true},
account_status: Boolean,
hash:String,
salt:String,
});
module.exports = UserSchema;
這是用戶模型的代碼:
const mongoose = require("mongoose");
const userSchema = require("./UserSchema");
const userModel = new mongoose.model("User", userSchema);
module.exports = userModel;
這是保存用戶物件的代碼:
const UserModel = require("../models/user/UserModel");
function UserController(){}
UserController.prototype.addUser = function(user_datas){
var new_user = new UserModel();
new_user.first_name = user_datas.first_name;
new_user.last_name = user_datas.last_name;
new_user.phone_number = user_datas.phone_number;
new_user.email = user_datas.email;
new_user.account_status = false;
new_user.hash = user_datas.hash;
new_user.save(function(err, user){
if(err){
/**
Some customs code before returning the promise
**/
return new Promise(function(resolve, reject){
reject(err);
resolve(null);
});
}
if(user){
/**
Some customs code before returning the promise
**/
return new Promise(function(resolve, reject){
resolve(user);
reject(null);
});
}
});
}
函式addUser總是回傳undefined而不是承諾。我想要的是解決創建的用戶物件并在發生錯誤時拒絕錯誤的承諾。
任何的想法 ?
提前致謝。
uj5u.com熱心網友回復:
您的代碼中發生的事情是,當您回傳 Promise 時,這實際上是傳遞給 的回呼函式的回傳值new_user.save()。
如果你希望你的addUser函式回傳一個決議為 User 物件new_user.save()的 Promise ,你可以包裝一個 Promise的內部并回傳它。
UserController.prototype.addUser = function(user_datas){
var new_user = new UserModel();
new_user.first_name = user_datas.first_name;
new_user.last_name = user_datas.last_name;
new_user.phone_number = user_datas.phone_number;
new_user.email = user_datas.email;
new_user.account_status = false;
new_user.hash = user_datas.hash;
return new Promise(function(resolve, reject) {
new_user.save(function(err, user) {
if (err) {
reject(err);
} else {
resolve(user);
}
});
});
}
uj5u.com熱心網友回復:
return new Promise()然后將整個 addUser 函式包裝在保存回呼中resolve/reject
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/321265.html
標籤:javascript 节点.js MongoDB 猫鼬 承诺
上一篇:陣列未正確插入物件
下一篇:郵遞員不作業的簡單洗掉請求
