[英]Sails.JS - Get the count of the number of objects/rows in the database
在Sails.js中,通過生成模型和控制器為您完成了大量工作。 控制器允許通過API訪問數據。 它允許通過傳遞開始/跳過/偏移和取/限制來輕松分頁。 但是為了讓我確定一個集合的最大頁面,我需要知道集合中有多少項目。
我試圖在生成器中擴展藍圖以公開新的API方法count
並創建計數操作。 根據Waterline文檔 , count
是一個可以在模型上調用的動作。 當我調用User.count()
,我得到了這個:
{ _context:
{ identity: 'user',
adapter:
{ syncable: false,
defaults: [Object],
registerCollection: [Function],
create: [Function],
find: [Function],
update: [Function],
destroy: [Function],
count: [Function],
identity: 'odata',
globalId: 'odata',
config: [Object] },
attributes: {},
_cast: { _types: [Object] },
_schema: { context: [Circular], schema: [Object], hasSchema: true },
_validator: { validations: {} },
_callbacks:
{ beforeValidation: [Object],
afterValidation: [Object],
beforeUpdate: [Object],
afterUpdate: [Object],
beforeCreate: [Object],
afterCreate: [Object],
beforeDestroy: [Object],
afterDestroy: [Object] },
_instanceMethods: {},
autoPK: true,
autoCreatedAt: true,
autoUpdatedAt: true,
hasSchema: true,
migrate: 'alter',
_model: { [Function] extend: [Function], inject: [Function], __super__: {} },
_transformer: { _transformations: {} },
_tableName: 'user',
_adapterDefs: [ [Object] ],
_adapter:
{ adapter: [Object],
adapterDefs: [Object],
query: [Circular],
collection: 'user' },
syncable: [Function],
defaults: [Function],
registerCollection: [Function],
config: [Function],
findOneById: [Function: dynamicMethod],
findOneByIdIn: [Function: dynamicMethod],
findOneByIdLike: [Function: dynamicMethod],
findById: [Function: dynamicMethod],
findByIdIn: [Function: dynamicMethod],
findByIdLike: [Function: dynamicMethod],
countById: [Function: dynamicMethod],
countByIdIn: [Function: dynamicMethod],
countByIdLike: [Function: dynamicMethod],
idStartsWith: [Function: dynamicMethod],
idContains: [Function: dynamicMethod],
idEndsWith: [Function: dynamicMethod],
findOneByCreatedAt: [Function: dynamicMethod],
findOneByCreatedAtIn: [Function: dynamicMethod],
findOneByCreatedAtLike: [Function: dynamicMethod],
findByCreatedAt: [Function: dynamicMethod],
findByCreatedAtIn: [Function: dynamicMethod],
findByCreatedAtLike: [Function: dynamicMethod],
countByCreatedAt: [Function: dynamicMethod],
countByCreatedAtIn: [Function: dynamicMethod],
countByCreatedAtLike: [Function: dynamicMethod],
createdAtStartsWith: [Function: dynamicMethod],
createdAtContains: [Function: dynamicMethod],
createdAtEndsWith: [Function: dynamicMethod],
findOneByUpdatedAt: [Function: dynamicMethod],
findOneByUpdatedAtIn: [Function: dynamicMethod],
findOneByUpdatedAtLike: [Function: dynamicMethod],
findByUpdatedAt: [Function: dynamicMethod],
findByUpdatedAtIn: [Function: dynamicMethod],
findByUpdatedAtLike: [Function: dynamicMethod],
countByUpdatedAt: [Function: dynamicMethod],
countByUpdatedAtIn: [Function: dynamicMethod],
countByUpdatedAtLike: [Function: dynamicMethod],
updatedAtStartsWith: [Function: dynamicMethod],
updatedAtContains: [Function: dynamicMethod],
updatedAtEndsWith: [Function: dynamicMethod] },
_method: [Function],
_criteria: {},
_values: null }
注意:我使用的是自定義適配器,但我已為適配器創建了count
方法。
要獲取用戶集合中對象數量的計數:
User.count(function (err, num) {
if(err) {
return console.log(err);
}
console.log(num);
});
要將User.count包裝在另一個方法中:
yourMethod = function (callback) {
User.count(callback);
}
現在您可以使用sails可安裝鈎子來通過blueprint api方法實現計數功能。
我在這個答案中解釋了它: 在Sails JS藍圖API中獲取總數
您還可以將查詢傳遞給count函數,以獲取滿足特定條件的集合中項目子集的計數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.