Node.js возврат не является функцией - PullRequest
1 голос
/ 31 марта 2020

Я хочу использовать метод входа в систему, но когда я определяю и импортирую, браузер возвращает не функцию

{code: -1, msg: "login is not a function", error: 500, errorMsg: "login is not a function"}

enter image description here

Я новичок, и мой общий лог c - это вызов логина с первого куска кода. Имя входа записывается во втором разделе кода, а затем во втором разделе будет вызываться функция третьего раздела 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)

и новый запрос Sql

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();

1 Ответ

0 голосов
/ 31 марта 2020

Функции в 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...