[英]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.