.leaseConnection()
从数据存储中租用一个新的连接,用于在同一个连接上运行多个查询(例如,以便during
中提供的逻辑可以重用数据库连接)。
await datastore.leaseConnection(during);
_或者_
var result = await datastore.leaseConnection(during);
参数 | 类型 | 详情 | |
---|---|---|---|
1 | during | Sails 将在获得连接并准备就绪时自动调用的一个过程参数。它将接收“During”用法表下方指定的参数。 |
参数 | 类型 | 详情 | |
---|---|---|---|
1 | db | 您新租用的数据库连接。(有关如何使用此连接的更多信息,请参阅.usingConnection() 。) |
请注意,在 Sails 1.1.0 之前,建议的
.leaseConnection()
用法期望您的“during”代码在完成时调用回调(proceed
)。只要您实际上不在“during”代码的函数签名中包含第二个参数,就不再需要这样做。
类型 | 详情 |
---|---|
从during 发送回的可选结果数据。换句话说,如果在您的during 函数中执行了return 'foo'; ,则结果将为'foo' 。 |
名称 | 类型 | 何时发生? |
---|---|---|
UsageError | 如果传入无效内容,则抛出此错误。 | |
AdapterError | 如果数据库适配器中出现错误,则抛出此错误。 | |
Error | 如果发生任何其他意外情况,则抛出此错误。 |
有关在 Sails 和 Waterline 中协商错误的示例,请参阅概念 > 模型和 ORM > 错误。
从默认数据存储中租用一个数据库连接,然后使用它发送两个查询,然后再将其释放回连接池。
var inventory = await sails.getDatastore()
.leaseConnection(async (db)=> {
var location = await Location.findOne({ id: inputs.locationId })
.usingConnection(db);
if (!location) {
let err = new Error('Cannot find location with that id (`'+inputs.locationId+'`)');
err.code = 'E_NO_SUCH_LOCATION';
throw err;
}
// Get all products at the location
var productOfferings = await ProductOffering.find({ location: inputs.locationId })
.populate('productType')
.usingConnection(db);
return productOfferings;
})
.intercept('E_NO_SUCH_LOCATION', 'notFound');
// All done! Whatever we were doing with that database connection worked.
// Now we can proceed with our business.