Adapt Services to the new Mongoose API

This commit is contained in:
Kamal Bennani 2019-02-02 13:19:05 +01:00 committed by Alexandre Bodin
parent 328f09da29
commit e8c92fc3d7
6 changed files with 77 additions and 68 deletions

View File

@ -14,11 +14,11 @@ module.exports = {
* @return {Object|Array} * @return {Object|Array}
*/ */
find: async (ctx) => { find: async (ctx, next, { populate } = {}) => {
if (ctx.query._q) { if (ctx.query._q) {
return strapi.services.<%= id %>.search(ctx.query); return strapi.services.<%= id %>.search(ctx.query);
} else { } else {
return strapi.services.<%= id %>.fetchAll(ctx.query); return strapi.services.<%= id %>.fetchAll(ctx.query, populate);
} }
}, },

View File

@ -8,6 +8,7 @@
// Public dependencies. // Public dependencies.
const _ = require('lodash'); const _ = require('lodash');
const { Builder, Query } = require('strapi-utils');
module.exports = { module.exports = {
@ -17,22 +18,13 @@ module.exports = {
* @return {Promise} * @return {Promise}
*/ */
fetchAll: (params) => { fetchAll: (params, populate) => {
// Convert `params` object to filters compatible with Mongo. const filter = new Builder(<%= globalID %>, params).convert();
const filters = strapi.utils.models.convertParams('<%= globalID.toLowerCase() %>', params);
// Select field to populate.
const populate = <%= globalID %>.associations
.filter(ast => ast.autoPopulate !== false)
.map(ast => ast.alias)
.join(' ');
return <%= globalID %> return new Query(<%= globalID %>)
.find() .find(filter)
.where(filters.where) .populate(populate)
.sort(filters.sort) .execute();
.skip(filters.start)
.limit(filters.limit)
.populate(filters.populate || populate);
}, },
/** /**
@ -60,12 +52,11 @@ module.exports = {
*/ */
count: (params) => { count: (params) => {
// Convert `params` object to filters compatible with Mongo. // Convert `params` object to filter compatible with Mongo.
const filters = strapi.utils.models.convertParams('<%= globalID.toLowerCase() %>', params); const filter = new Builder(<%= globalID %>, params).convert();
return new Query(<%= globalID %>)
return <%= globalID %> .count(filter)
.countDocuments() .execute();
.where(filters.where);
}, },
/** /**

View File

@ -1,21 +1,25 @@
const _ = require('lodash'); const _ = require('lodash');
const { Builder, Query } = require('strapi-utils');
module.exports = { module.exports = {
find: async function (params, populate, raw = false) { find: async function (params, populate) {
const query = this const model = this;
.find(params.where) // Convert `params` object to filter compatible with Mongo.
.limit(Number(params.limit)) const filter = new Builder(model, params).convert();
.sort(params.sort)
.skip(Number(params.skip))
.populate(populate || this.associations.map(x => x.alias).join(' '));
return raw ? query.lean() : query; return new Query(model)
.find(filter)
.populate(populate)
.execute();
}, },
count: async function (params) { count: async function (params) {
return Number(await this const model = this;
.where(params.where) // Convert `params` object to filter compatible with Mongo.
.countDocuments()); const filter = new Builder(model, params).convert();
return new Query(model)
.count(filter)
.execute();
}, },
search: async function (params, populate) { // eslint-disable-line no-unused-vars search: async function (params, populate) { // eslint-disable-line no-unused-vars

View File

@ -1,19 +1,24 @@
const _ = require('lodash'); const _ = require('lodash');
const { Builder, Query } = require('strapi-utils');
module.exports = { module.exports = {
find: async function (params = {}, populate) { find: async function (params, populate) {
return this const model = this;
.find(params.where) const filter = new Builder(model, params).convert();
.limit(Number(params.limit))
.sort(params.sort) return new Query(model)
.skip(Number(params.start)) .find(filter)
.populate(populate || this.associations.map(x => x.alias).join(' ')) .populate(populate)
.lean(); .execute();
}, },
count: async function (params = {}) { count: async function (params) {
return Number(await this const model = this;
.countDocuments(params)); // Convert `params` object to filter compatible with Mongo.
const filter = new Builder(model, params).convert();
return new Query(model)
.count(filter)
.execute();
}, },
findOne: async function (params, populate) { findOne: async function (params, populate) {

View File

@ -1,19 +1,24 @@
const _ = require('lodash'); const _ = require('lodash');
const { Builder, Query } = require('strapi-utils');
module.exports = { module.exports = {
find: async function (params = {}, populate) { find: async function (params, populate) {
return this const model = this;
.find(params.where) const filter = new Builder(model, params).convert();
.limit(Number(params.limit))
.sort(params.sort) return new Query(model)
.skip(Number(params.start)) .find(filter)
.populate(populate || this.associations.map(x => x.alias).join(' ')) .populate(populate)
.lean(); .execute();
}, },
count: async function (params = {}) { count: async function (params) {
return Number(await this const model = this;
.countDocuments(params)); // Convert `params` object to filter compatible with Mongo.
const filter = new Builder(model, params).convert();
return new Query(model)
.count(filter)
.execute();
}, },
findOne: async function (params, populate) { findOne: async function (params, populate) {

View File

@ -1,20 +1,24 @@
const _ = require('lodash'); const _ = require('lodash');
const { Builder, Query } = require('strapi-utils');
module.exports = { module.exports = {
find: async function (params = {}, populate) { find: async function (params, populate) {
return this const model = this;
.find(params.where) const filter = new Builder(model, params).convert();
.limit(Number(params.limit))
.sort(params.sort) return new Query(model)
.skip(Number(params.skip)) .find(filter)
.populate(populate || this.associations.map(x => x.alias).join(' ')) .populate(populate)
.lean(); .execute();
}, },
count: async function (params = {where: {}}) { count: async function (params) {
return Number(await this const model = this;
.countDocuments() // Convert `params` object to filter compatible with Mongo.
.where(params.where)); const filter = new Builder(model, params).convert();
return new Query(model)
.count(filter)
.execute();
}, },
findOne: async function (params, populate) { findOne: async function (params, populate) {