Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite不返回任何数据_Sql_Node.js_Database_Sqlite_Express - Fatal编程技术网

Sqlite不返回任何数据

Sqlite不返回任何数据,sql,node.js,database,sqlite,express,Sql,Node.js,Database,Sqlite,Express,我试图查询特定行,但返回了任何内容。我确保我有数据 我使用express.js并编写了一个请求,其中我发送了一个电子邮件值作为查询值。对于sql查询,当我想要返回所有行时,它可以工作。但是,当我尝试使用WHERE子句查询特定行时,什么也不会返回 首先,这将创建用户表: const creatUsersTableStmt = `CREATE TABLE IF NOT EXISTS users ( firstName TEXT NOT NULL,

我试图查询特定行,但返回了任何内容。我确保我有数据

我使用express.js并编写了一个请求,其中我发送了一个电子邮件值作为查询值。对于sql查询,当我想要返回所有行时,它可以工作。但是,当我尝试使用WHERE子句查询特定行时,什么也不会返回

首先,这将创建用户表:

const creatUsersTableStmt =
    `CREATE TABLE IF NOT EXISTS users (
                 firstName TEXT NOT NULL, 
                 lastName TEXT NOT NULL, 
                 email TEXT NOT NULL, 
                 phone TEXT NOT NULL,
                 UNIQUE(email)
     )`;
这是sql查询:

const fetchUser = `SELECT rowid, * FROM users WHERE email = ?`;
这是路线:

router.get('/user', function (req, res, next) {
    let userEmail = req.query.email;

    db.run(fetchUser, [userEmail], (err, user) => {
        if (err) return console.log(err.message);
        res.send(user)
    })
})
使用电子邮件“rr”创建用户后。这是我的API调用:

GET http://localhost:3000/users/user?email="rr"

响应未定义。

您应该从
电子邮件
查询参数中删除双引号:

http://localhost:3000/users/user?email=rr
这将查找文本电子邮件为
rr
(您正在搜索
“rr”
)的所有记录。很怀疑会有这样的记录。如果您想发送另一个电子邮件地址,请使用以下方式:

http://localhost:3000/users/user?email=jon.skeet@google.com

您应该从
电子邮件
查询参数中删除双引号:

http://localhost:3000/users/user?email=rr
这将查找文本电子邮件为
rr
(您正在搜索
“rr”
)的所有记录。很怀疑会有这样的记录。如果您想发送另一个电子邮件地址,请使用以下方式:

http://localhost:3000/users/user?email=jon.skeet@google.com
用这个代替

   router.get('/user', function (req, res, next) {
        let userEmail = req.query.email;

        db.run(fetchUser, [userEmail], function (err, user) => {
            if (err) return console.log(err.message);
            res.send(user)
        })
    })
用这个代替

   router.get('/user', function (req, res, next) {
        let userEmail = req.query.email;

        db.run(fetchUser, [userEmail], function (err, user) => {
            if (err) return console.log(err.message);
            res.send(user)
        })
    })

我已经解决了,我把db.run改为db.all

我已经解决了,我把db.run改为db.all

刚刚尝试过,但仍然没有返回任何内容。您可以验证您的节点应用程序是否能够正确接收电子邮件查询参数吗?是的,我是console。将其注销并打印正确的电子邮件。
err
中是否有任何错误消息?我无法使
rowid
正常工作,至少在SQLite 3.27()上不能。控制台中没有错误。rowid对我有效,因为我有另一个api调用,它获取所有行而不是特定行。我使用sqlite3 4.1.0刚刚尝试过,但仍然没有返回任何内容。您能否验证您的节点应用程序是否能够正确接收电子邮件查询参数?是的,我使用控制台。将其注销并打印正确的电子邮件。
err
中是否有任何错误消息?我无法使
rowid
正常工作,至少在SQLite 3.27()上不能。控制台中没有错误。rowid对我有效,因为我有另一个api调用,它获取所有行而不是特定行。我使用sqlite3 4.1.0,但我不会将id作为查询字符串发送。我发送电子邮件是因为我试图获取id,因此rowidI没有将id作为查询字符串发送。我之所以发送电子邮件,是因为我试图获取id,因此是rowid