У меня есть база данных MySQL с таблицей под названием "posts", которую я читаю через FeathersJS и перья-продолжение. В настоящее время у меня есть рабочий прототип со следующим кодом, который возвращает желаемый результат, но только на консоль, а также все содержимое таблицы сообщений в маршрут / posts, однако я хочу вернуть только определенный набор записей из таблицы в / posts.
В таблице есть столбец post_status, в котором сообщение может быть «опубликовано» или «черновик». Я хочу вернуть только «опубликованные» записи в / posts, но хочу добиться этого на стороне сервера, а не / posts? Status = published. Как этого добиться?
См. Ниже код:
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 в службе, но это не повлияло на результат и не привело к возникновению каких-либо ошибок.
post_status
в своей модели. Вероятно, это сработает, если вы это сделаете (вы также можете синхронизировать таблицу с моделью). - person Daff   schedule 16.02.2018