我在节点上进行sqlite查询时遇到问题。使用SqliteStudio进行的查询正在运行,但是使用Node.js时,我得到了一个空数组。
以下是查询:
const query =`
SELECT 'telephone' AS type,telephone AS data,CASE
WHEN telephone = (
SELECT data FROM customers_verified_contact_infos
WHERE type='telephone' AND data=j.telephone AND customer_id = ?
) THEN 'true'
ELSE 'false'
END AS verified
FROM customers j WHERE customer_id = ? AND telephone IS NOT NULL
UNION
SELECT 'email' AS type,email AS data,CASE
WHEN email = (
SELECT data FROM customers_verified_contact_infos
WHERE type='email' AND data=email AND customer_id = ?
) THEN 'true'
ELSE 'false'
END AS verified
FROM customers WHERE customer_id = ? AND email IS NOT NULL
UNION
SELECT 'fax' AS type,fax AS data,CASE
WHEN fax = (
SELECT data FROM customers_verified_contact_infos
WHERE type='fax' AND data=fax AND customer_id = ?
) THEN 'true'
ELSE 'false'
END AS verified
FROM customers WHERE customer_id = ? AND fax IS NOT NULL
UNION
SELECT type,data, 'true' AS verified
FROM customers_verified_contact_infos WHERE customer_id = ?
`;
我请求两个表:
具有一些客户信息的客户
customers_verified_contact_infos,已验证列表联系信息
联系信息可以在两个表中,也可以仅在一个表中。 结果是包含数据的行的列表,数据的类型以及是否经过验证。
现在,Node.js请求:
db.all(query,[customer_id], (err, data) => {
console.log(data);
});
数据是一个空数组,并且err = null。
使用SqliteStudio,使用相同的查询和客户,我得到:
我尝试通过SELECT进行SELECT,但遇到这种情况我没有得到结果。我在互联网上找不到任何可以帮助我的东西。 如果有人可以提供帮助或给我建议,我将不胜感激。
谢谢
答案 0 :(得分:0)
查询具有7个?
占位符,但是数组[customer_id]
仅具有一个元素。您需要为每个占位符重复该操作。
db.all(query, Array(7).fill(customer_id), (err, data) => {
console.log(data);
});