簡體   English   中英

Node.js 返回的不是一個函數

[英]Node.js return not is a function

我想使用登錄方法,但是當我定義和導入時,瀏覽器返回的不是函數

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

在此處輸入圖片說明

我是初學者,我的一般邏輯是從第一段代碼調用login。 登陸寫在第二段代碼中,然后第二段會調用第三段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();

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM