feathersjs休息返回记录具有特定值



我有一个MySQL数据库,其中一个名为"帖子"的表,我正在从via feathersjs和羽毛读取。目前,我有一个具有以下代码的工作原型,该原型返回了所需的结果,但仅返回了控制台,以及柱子表的整个内容到/帖子路由,但是我只想从表中返回一组特定的记录到/帖子。

该表有一个名为postrongtatus的列,其中可以"发布"或"草稿"。我只想将"已发布"记录归还到/帖子,但要实现与/posts?status =已发布的那样。如何实现?

请参见下面的代码:

const path = require('path');
const feathers = require('@feathersjs/feathers');
const express = require('@feathersjs/express');
const socketio = require('@feathersjs/socketio');
const Sequelize = require('sequelize');
const service = require('feathers-sequelize');
const sequelize = new Sequelize('sandbox', 'sandbox', 'secretpassword', {
  host: 'localhost',
  dialect: 'mysql',
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  },
  operatorsAliases: false
});
const Post = sequelize.define('posts', {
  post_title: Sequelize.STRING
},
{
  timestamps: false,
  underscored: true,
});
// Create an Express compatible Feathers application instance.
const app = express(feathers());
// Turn on JSON parser for REST services
app.use(express.json());
// Turn on URL-encoded parser for REST services
app.use(express.urlencoded({ extended: true }));
// Enable REST services
app.configure(express.rest());
// Enable Socket.io services
app.configure(socketio());
app.use(express.errorHandler());
//This works fine to return to the console but not to /posts
Post.findAll({
where: {
  post_status: 'published'
}
}) .then(posts => {
    console.log(JSON.stringify(posts));
  });
//This returns the entire contents of the posts table to /posts
app.use('/posts', service({
  Model: Post,
  paginate: {
    default: 10,
    max: 100
  },
}));
// Start the server
const port = 3030;
app.listen(port, () => {
  console.log(`Feathers server listening on port ${port}`);
});

我尝试了服务中Findall方法的"位置",但这并没有更改输出或产生任何错误。

我通过使用服务中的查找方法中的Where子句解决了这一点,请参见下面的完整代码:

const path = require('path');
const feathers = require('@feathersjs/feathers');
const express = require('@feathersjs/express');
const socketio = require('@feathersjs/socketio');
const Sequelize = require('sequelize');
const service = require('feathers-sequelize');
const sequelize = new Sequelize('sandbox', 'sandbox', 'secretpassword', {
  host: 'localhost',
  dialect: 'mysql',
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  },
  operatorsAliases: false
});
const Post = sequelize.define('posts', {
  post_title: Sequelize.STRING,
  post_status: Sequelize.STRING
  
},
{
  timestamps: false,
  underscored: true,
});
// Create an Express compatible Feathers application instance.
const app = express(feathers());
// Turn on JSON parser for REST services
app.use(express.json());
// Turn on URL-encoded parser for REST services
app.use(express.urlencoded({ extended: true }));
// Enable REST services
app.configure(express.rest());
// Enable Socket.io services
app.configure(socketio());
app.use(express.errorHandler());
const myService = {
  find(params) {
    let posts = Post.findAll({
      where: {
        post_status: 'published'
      }
    });
    return Promise.resolve(posts);
  },
  get(id, params) {},
  create(data, params) {},
  update(id, data, params) {},
  patch(id, data, params) {},
  remove(id, params) {},
  setup(app, path) {}
}
app.use('/posts', myService);
// Start the server
const port = 3030;
app.listen(port, () => {
  console.log(`Feathers server listening on port ${port}`);
});

相关内容

  • 没有找到相关文章

最新更新