如何从 objection.js 中获取所有行

How to fetch all rows from objection.js

我正在使用 Knex.js & Objection.js,我想显示国家/地区下拉列表,所以我需要所有行,但它只返回 10 行。如何覆盖分页功能?

在urllocalhost:3031/countires?pages='All'里面有没有我可以设置的参数,应该有一些简单的方法。我正在使用 "knex": "^0.21.1", "objection": "^1.6.11" 版本。 default.js包含

"paginate": {
    "default": 10,
    "max": 2000
  },

暂时我只是在 src\serivices\countries\countires.services.js

中做了以下更改
module.exports = function (app) {
  const options = {
    Model: createModel(app),
    //paginate: app.get("paginate"),
    paginate: {
      default: 0,
      max: 0,
    },
  };

  // Initialize our service with any options it requires
  app.use("/countries", new Countries(options, app));

如果我能看到您对这条路线的异议查询,那将会很有帮助。但是您很可能会像这样在分页中设置一个值:

paginate = {
  isPage: false,
  default:10,
  max:2000
}

然后在您的查询中,您可以使用 if 语句来检查 isPage 值是真还是假。并且仅当您将该值设置为 true 时才限制您的响应。 像这样:

const countries = paginate.isPage
  ? await Country.query()
    .limit(paginate.default)
  : await Country.query()

如果您需要更多帮助,请回复我,我会尽我所能回复!

我发现解决方案需要在获取挂钩之前添加应用程序或服务,在我的案例中我添加到 /src/app。hooks.js

module.exports = {
  before: {
    find: [
      (hook) => {
        if (hook.params.query && hook.params.query.$paginate) {
          hook.params.paginate =
            hook.params.query.$paginate === "false" ||
            hook.params.query.$paginate === false;
          delete hook.params.query.$paginate;
        }
        return hook;
      },
    ],
 }
}

如何从 Postman 调用它:

GET http://localhost:3031/institutes?$paginate=false // all rows
GET http://localhost:3031/institutes //Using pagination

Nuxt.js

async mounted() {
    this.countries = await this.$api.countries.find({ $paginate: false });
},

vue.js

this.countries = await this.$axios.get('http://localhost:3031/countries?$paginate=false');