gpt4 book ai didi

javascript - Node.js 返回的不是一个函数

转载 作者:行者123 更新时间:2023-11-28 10:36:26 25 4
gpt4 key购买 nike

我想使用登录方法,但是当我定义和导入时,浏览器返回的不是函数

{code: -1, msg: "登录不是函数", error: 500, errorMsg: "登录不是函数"}

enter image description here

我是一个初学者,我的一般逻辑是从第一段代码开始调用登录。登录写在第二段代码中,然后第二段会调用第三段SQL的函数

    const express = require('express')
const Result=require('../models/Result')
const login=require('../services/user')
// const debug = require('../utils/constant').debug
const router = express.Router()

router.post('/login', function(req, res) {
console.log('/user/login', req.body)
// debug && console.log(sql);
const {username,password}=req.body
login(username,password).then(user=>{
if(!user||user.length ===0){
new Result('登陆成功').success(res)
}else{
new Result('登陆失败').fail(res)
}
})

})
module.exports = router

./services/user

const {querySql}=require('../db')
return function login(username,password){
querySql("select * from admin_user where username='${username}' and password='${password}'").then(results =>{
}).catch(err =>{
console.log(err);
})
}
module.exports={

}

./db/index.js

const mysql =require('mysql')
const config =require('./config')
function connect() {
return mysql.createConnection({
host:config.host,
user:config.user,
password:config.password,
database:config.database,
multipleStatements: true
})
}

function querySql(sql){
const conn =connect()
return new Promise((resolve,reject)=>{
try{
conn.query(sql,(err,results) => {
if(err){
reject(err)
}else{
resolve(results)
}
})
}catch(e){
reject(e)
}finally{
conn.end()
}
})
}
module.exports={
connect,
querySql
}

新错误

  querySql("select * from admin_user'")
^

TypeError: querySql is not a function
at login (/Users/dujinyang/admin-imooc-node/services/user.js:3:3)
at Object.<anonymous> (/Users/dujinyang/admin-imooc-node/services/user.js:7:17)

和新的querySql

const mysql =require('mysql')
const config =require('./config')
function connect() {
return mysql.createConnection({
host:config.host,
user:config.user,
password:config.password,
database:config.database,
multipleStatements: true
})
}

function querySql(sql){
const conn =connect()
return new Promise((resolve,reject)=>{
try{
conn.query(sql,(err,results) => {
if(err){
reject(err)
}else{
resolve(results)
}
})
}catch(e){
reject(e)
}finally{
conn.end()
}
})
}
exports.querySql = querySql();

最佳答案

NodeJS 中的函数是导出的,而不是返回的。

function login(username,password){
querySql(`select * from admin_user where username=${username} and password=${password}`)
.then(results =>{})
.catch(err =>{ console.log(err); })
}

exports.login = login();

然后

const {login} = require('../services/user');

关于javascript - Node.js 返回的不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60942331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com