[英]calling a controller function with promise unable to await with then function
如果數據庫中滿足條件,我在 controller 中有一個 function 想要創建兩個不同的模型。 API 被調用:
PUT 本地主機:3000/用戶
調用 app.post('/user', user.create)
user.create 在 controller 文件中:
const business = require("./controllers/business.controller.js");
exports.create = (req,res) => {
const user = new User ({
email: req.body.email
uniqueAccount: req.body.unique
})
User.create (user, function(err,doc){
if (err) res.status(500).send(err)
if (user.uniqueAccount) {
let result = business.create(req,res)
console.log(result)
}
res.send(doc)
})
}
在業務 controller 中,同樣是 function:
exports.create = (req,res) => {
const business = new Business({
name: req.body.businessname
})
Business.create (business, function(err,doc){
if (err) return err
return doc
}
}
因為我的行:
let result = business.create(req,res)
沒有 promise 等待,我無法看到來自業務 controller 的返回。 我嘗試使用 a.then function 但我遇到了錯誤:
TypeError:無法讀取未定義的屬性“then”
我該如何正確 go 關於這個? I could just import the model into my user controller, and then create the business model in the user controller but I wanted to separate the purposes.
僅當 function 返回 promise 時,您才可以在 function 上使用 await,因此請從您的業務 Z594C103F2C6E0E4C3D 中返回 promise 而不是返回簡單值 promise。
您可以承諾您的業務 controller function 然后在您的 user.create function 中使用 await。 像這樣做:
const business = require("./controllers/business.controller.js");
exports.create = (req,res) => {
const user = new User ({
email: req.body.email
uniqueAccount: req.body.unique
})
User.create (user, async function(err,doc){
if (err) res.status(500).send(err)
if (user.uniqueAccount) {
let result = await business.create(req,res)
console.log(result)
}
res.send(doc)
})
}
現在承諾您的業務 controller function。
exports.create = (req,res) => {
return new Promise((resolve,reject)=>{
const business = new Business({
name: req.body.businessname
})
Business.create (business, function(err,doc){
if (err) reject(err)
resolve(doc)
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.