nodejs npm mysql return 单行句柄
nodejs npm mysql return single row handle
我正在使用 node
和 npm mysql
做一些数据库工作。
如果我知道我只会收到一行,有什么方法可以避免使用 result[0]
吗?
connection.query({
sql: "SELECT spend FROM `account` WHERE `name` = ? order by date desc limit 1",
values: [market.name]
}, function (error, results, fields) {
market.fee = results[0].age;
resolve(market);
});
connection.query
return三个值的回调函数,其中第二个是查询的结果集,因此是值数组.
因此,即使您确定结果集只包含一条记录,也必须使用 result[0]
。
此外,它在某种程度上是查询自己的规范,它决定了应该 returned 的数据类型。 mysql 的 SELECT
以这种方式工作(虽然你可以限制记录)不像 mongodb 的 db.collection.findOne()
查询本身知道它总是 return 一条记录
您还可以使用数组解构从结果参数中解压第一行:
const sql = "SELECT age FROM `account` WHERE `name` = ? order by date desc limit 1";
connection.query({ sql, values: [market.name] }, function (error, [account], fields) {
market.fee = account.age;
resolve(market);
});
或者放飞自我,将一些对象解构融入其中:
const sql = "SELECT age FROM `account` WHERE `name` = ? order by date desc limit 1";
connection.query({ sql, values: [market.name] }, function (error, [{ age }], fields) {
market.fee = age;
resolve(market);
});
另一个重构,做同样的事情,但使用简洁的主体箭头函数并将 market
传播到具有 fee
的新对象中,映射在输入参数 [{ age: fee }]
中。
connection.query(
{
sql: "SELECT age FROM `account` where `name` = ? order by date desc limit 1",
values: [market.name]
},
(error, [{ age: fee }], fields) => resolve({ ...market, fee })
);
我正在使用 node
和 npm mysql
做一些数据库工作。
如果我知道我只会收到一行,有什么方法可以避免使用 result[0]
吗?
connection.query({
sql: "SELECT spend FROM `account` WHERE `name` = ? order by date desc limit 1",
values: [market.name]
}, function (error, results, fields) {
market.fee = results[0].age;
resolve(market);
});
connection.query
return三个值的回调函数,其中第二个是查询的结果集,因此是值数组.
因此,即使您确定结果集只包含一条记录,也必须使用 result[0]
。
此外,它在某种程度上是查询自己的规范,它决定了应该 returned 的数据类型。 mysql 的 SELECT
以这种方式工作(虽然你可以限制记录)不像 mongodb 的 db.collection.findOne()
查询本身知道它总是 return 一条记录
您还可以使用数组解构从结果参数中解压第一行:
const sql = "SELECT age FROM `account` WHERE `name` = ? order by date desc limit 1";
connection.query({ sql, values: [market.name] }, function (error, [account], fields) {
market.fee = account.age;
resolve(market);
});
或者放飞自我,将一些对象解构融入其中:
const sql = "SELECT age FROM `account` WHERE `name` = ? order by date desc limit 1";
connection.query({ sql, values: [market.name] }, function (error, [{ age }], fields) {
market.fee = age;
resolve(market);
});
另一个重构,做同样的事情,但使用简洁的主体箭头函数并将 market
传播到具有 fee
的新对象中,映射在输入参数 [{ age: fee }]
中。
connection.query(
{
sql: "SELECT age FROM `account` where `name` = ? order by date desc limit 1",
values: [market.name]
},
(error, [{ age: fee }], fields) => resolve({ ...market, fee })
);