簡體   English   中英

如何使用 nodejs 在 mysql 數據庫中插入 npm uniqid 模塊。 當我輸入代碼時,它顯示錯誤“TypeError: uniqid is not a function”

[英]How to insert npm uniqid modules in mysql database using nodejs. when i put on my code it display an error "TypeError: uniqid is not a function"

我正在將 nodejs 與 express 和 mysql 一起使用。 當我提交表單時,我發現一個錯誤“uniqid 不是函數”。

var express = require('express');
var router = express.Router();
var uniqid = require('uniqid');
var db = require('../db');

router.post('/create',function(req,res,next){
    var full_name = req.body.fullname;
    var email = req.body.email;
    var password= req.body.password;
    var mobile_no = req.body.mobile_no;    
    var uniqid = uniqid();

    var insert_query = `INSERT INTO users (user_uid,full_name,email,mobile_no,password) VALUES ("${uniqid}","${full_name}","${email}","${mobile_no}","${password}") `;

    db.query(insert_query,function(err,result){
      if(err) throw err;
      res.redirect('/signup');
   });
});
module.exports = router;

您正在使用uniqid()的值覆蓋uniqid模塊

var uniqid = require('uniqid');
...
var uniqid = uniqid();

雖然它可能適用於第一次執行1 ,但后續調用將失敗並顯示錯誤“uniqid is not a function”

更改名稱並使用 es6 let/const而不是var

const uniqid = require('uniqid');
...
const newId = uniqid();
const insert_query = `INSERT INTO ... VALUES ("${newId}"...) `;

1不是,請參閱下面的 Klaycon 評論

讓我們以這段代碼為例:

 var foo = () => "test" function test() { var foo = foo() } test()

如您所見,它具有與您相同的錯誤。 這是因為您將局部變量命名為全局變量。

發生的事情就是所謂的提升 當函數被執行時,它設置任何值之前foo聲明為當前函數執行上下文的局部變量。

然后引擎嘗試用foo()設置它的值,但當時foo是一個局部變量,而不是全局變量,它的值是undefined

顯然, undefined不是函數,因此會出現錯誤“foo 不是函數”。

tl;dr:命名變量時要小心(並使用let / const )。

暫無
暫無

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

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