最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何解决从JSON.parse不必要的异常()命令

运维笔记admin8浏览0评论

如何解决从JSON.parse不必要的异常()命令

如何解决从JSON.parse不必要的异常()命令

身份验证是好的,当用户的信息是正确的,但在进入错误的详细信息服务器崩溃

passport.use(new LocalStrategy({
  usernameField: 'password',
  passportField: 'username'
},
        function(username, password, done) {
          con.query("SELECT * FROM uids WHERE list =" +"'" + username + "'", function (err, result) {
            if (err) done(err);
            var clean =  JSON.parse(JSON.stringify(result))[0].list //Expected Result :  test2
                      //from [ RowDataPacket { list: 'test2' } ]

              //no user was found

          if(username === clean) {
              //Success
              return done(null, true);
          } else {
              //Wrong password
              return done(null, false);
          }
            });
        }
    ));

错误从服务器:

  throw err; // Rethrow non-MySQL errors
        ^

TypeError: Cannot read property 'list' of undefined

我明白了什么是错的,但我不知道是否有检查清单甚至存在功能

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "dawg111",
  password: "poopingboy111",
   database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connection to Database is ok!");
});

const LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy({
  usernameField: 'username',
  passportField: 'password'
},
        function(username, password, done) {
          con.query('SELECT * FROM uids WHERE list = ?', [username], function (error, results, fields) {
            if (error) throw error;
            console.log(results);
          });
        }
    ));
回答如下:

你不需要任何JSON.stringifyJSON.parse这里。您没有任何JSON。 results应该已经是一个数组,这样你就可以直接而无需将其转换为或JSON使用它。

如果要检查是否有绝对的结果,然后将if (results)确保结果的变量定义(虽然我怀疑它总是会,但有时可能会在其中没有条目)。

因此,因此,如果results定义,并要检查的行数,然后if (results.length > 0)将做的工作 - 这是怎么检查的任何JavaScript数组的长度。

所以,总体来说,你可以这样做:

      con.query('SELECT * FROM uids WHERE list = ?', [username], function (error, results, fields) {
        if (error) throw error;// ok
        console.log(results); // [ RowDataPacket { list: 'test2' } ]

        if (results.length > 0){
          var clean = results[0].list //Expected Result :  test2

          if(username === clean) {
            //Success
            return done(null, true);
//...etc
发布评论

评论列表(0)

  1. 暂无评论