Javascript Sails.JS-获取数据库中对象/行数的计数
在Sails.js中,通过生成模型和控制器为您完成了大量工作。控制器允许通过API访问数据。它允许通过传递开始/跳过/偏移和接受/限制来轻松分页。但是为了确定一个集合的最大页面,我需要知道一个集合中有多少项 我尝试在生成器中扩展blueprint,以公开一个新的API方法Javascript Sails.JS-获取数据库中对象/行数的计数,javascript,node.js,sails.js,waterline,Javascript,Node.js,Sails.js,Waterline,在Sails.js中,通过生成模型和控制器为您完成了大量工作。控制器允许通过API访问数据。它允许通过传递开始/跳过/偏移和接受/限制来轻松分页。但是为了确定一个集合的最大页面,我需要知道一个集合中有多少项 我尝试在生成器中扩展blueprint,以公开一个新的API方法count,并创建count操作。根据,count是可以在模型上调用的操作。当我调用User.count()时,我得到以下结果: { _context: { identity: 'user', adapter:
count
,并创建count操作。根据,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可安装钩子通过blueprintapi方法实现计数功能 我在回答中解释道:
您还可以将查询传递给count函数,以获取集合中满足特定条件的项目子集的计数。User.count(yourCallbackFunction);当然,它是基于回调的。。我不知道我在想什么。这也解释了它返回的原因。。。链式的
User
对象。我没有使用sails,我想应该是User.count(function(err,num){console.log(num);});如果您定义了一个count方法,它应该是:count=function(callback){User.count(callback)};我现在在你的帮助下得到了它。如果您将信息放入答案中,我会将其标记为正确的答案。我想了解如何以及在何处向sails公开count方法,您可以编写答案吗?是否有方法将查询传递给count函数?用例是获取集合中满足特定条件的项目子集的计数。