求大佬问一个nodejs里面的promise的问题
const mysql = require('mysql')
const { MYSQL_CONF } = require('../config/db.js')
const con = mysql.createConnection(MYSQL_CONF)
con.connect()
// 统一执行sql的函数
function exec(sql) {
const promise = new Promise((resolve, reject) => {
con.query(sql, (err, result) => {
if (err) {
reject(err);
return
}
resolve(result)
})
})
return promise
}
module.exports = {
exec
}
这行代码导出exec
const { exec } = require('../db/mysql.js')
const loginCheck = (username, password) => {
const sql = `
select username,realname from users where username='${username}' and password='${password}'
`
return exec(sql).then(rows => {
return rows[0] || {}
})
}
module.exports = { loginCheck }
这行代码返回的为啥是一个promise对象 ,这里搞不明白 不是已经.then了吗 并且返回了内容了吗 然后后面代码继续.then就不清楚为啥能这样 打印出来也是返回的promise
const { loginCheck } = require('../controller/user')
const { SuccessModel, ErrorModel } = require('../model/resModel.js')
const handleUserRouter = (req, res) => {
const {
method,
url
} = req
// 登录
if (method === 'POST' && req.path === '/api/user/login') {
const { username, password } = req.body
const result = loginCheck(username, password)
return result.then(data => {
if (data.username) {
return new SuccessModel()
} else {
return new ErrorModel('登录失败')
}
})
}
}
module.exports = handleUserRouter
求解 这段代码的result为啥还能.then
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
then
返回的是一个新的promise
then()
返回一个Promise
then()
返回的不是原来的Promise