我有通过sequelize使用mysql运行的feathers.js.这是有效的,我可以从表中收集数据.下一步是在模型中定义"连接".
我有一个表'status_id'和'country_id'的表.这些列引用元数据表中的id.在SQL中我会说:
SELECT status.description, country.description, detail
FROM details
INNER JOIN metadata status
ON (details.status_id = status.id AND status.type = 'status'
INNER JOIN metadata country
ON (details.country_id =country.id AND country.type = 'country')
Run Code Online (Sandbox Code Playgroud)
在这种情况下,此元数据表不会很大,因此这种方法.它确实提供了我需要的灵活性.
在feathters.js中我需要做什么?
我经常使用羽毛并且喜欢它,但我需要返回超过 1000 条记录作为特殊情况。但是,无论我做什么,Feathers 都会返回一个将 $limit 重置为 1000 的查询,并且只返回 1000 条记录。
我知道它正在传达我的 $limit,因为如果我将限制设置为 1、10、500 或 999,它会尊重它,但如果我将其设置为 1001 或更高的值,它只会返回 1000。
我将feathers与MySQL和feathers-sequalize一起使用。
我通过sequelize一直在使用feathersjs/nodejs而不是postgres db.在我的数据库中,我有用户表和事件表.他们有两次关系:
events.belongsTo(models.users, {
foreignKey: {
name: 'creatorId',
allowNull: false
},
onDelete: 'CASCADE',
as: 'creator'
});
events.belongsToMany(models.users, {
through: 'event_participants',
as: 'participants',
foreignKey: 'eventId',
otherKey: 'userId'
});
models.users.belongsToMany(events, {
through: 'event_participants',
as: 'events'
});
Run Code Online (Sandbox Code Playgroud)
一切正常,表创建并包含我将用户作为参与者进入事件.问题是通过关联查询.我正在尝试为当前用户获取事件,因此我需要创建者是当前用户的事件和其中一个参与者是当前用户的事件.问题是第二部分"查询当前用户是参与者之一".我期待这样的事情
'api/events?$or[0][creatorId]=currUserId&$or[1][participants][$contains]=currUserId'
但它没有工作因为没有像"参与者"这样的列被包含在内,所以我无法查询它.所以现在我只是获取所有事件并在挂钩后为当前用户过滤它们,但它似乎是错误的.这样做的正确方法是什么?
并且我知道我可以通过将用户包含在用户中并获取他来获取用户是参与者之一的事件但是问题是我无法将所有数据排序在一起,它被单独排序而另一个问题是在前端进行分页.
我们如何在迁移中更改列类型。在我的迁移 1 中,我有一个添加了该列的迁移。现在我想将列类型从 string 更改为 text ,我应该创建一个类似于 changeColumn 的新迁移文件,还是可以创建与迁移 1 相同的新迁移文件,但我只需要将类型更改为 text ?谢谢你。
#迁移 1
await queryInterface.addColumn(SampleModel.tableName, 'name', {
type: Sequelize.STRING,
allowNull: true,
}, {
transaction,
});
Run Code Online (Sandbox Code Playgroud)
await queryInterface.addColumn(SampleModel.tableName, 'name', {
type: Sequelize.TEXT,
allowNull: true,
}, {
transaction,
});
Run Code Online (Sandbox Code Playgroud) 我今天第一次尝试了feathers-sequelize,现在已经在hasMany协会上挣扎了几个小时。
我想做一个简单的projects (>hasMany>)issues关系,但我刚刚遇到第一个问题。
期望的输出:
{
"id": 1,
"name": "Project 1",
"issues": [
{"id": 1,
"title": "Issue 1"},
{"id": 2,
"title": "Issue 2"},
]
}
Run Code Online (Sandbox Code Playgroud)
实际输出:
{
"id": 1,
"name": "Project 1",
"issues.id": 1,
"issues.title": "Issue 1",
}
Run Code Online (Sandbox Code Playgroud)
我使用feathers-cli (v3.6.1) 生成了服务并添加了前钩以包含问题。我的模型看起来像这样
项目.model.js:
module.exports = function (app) {
const sequelizeClient = app.get('sequelizeClient');
const projects = sequelizeClient.define('projects', {
id: { type: Sequelize.INTEGER(10).UNSIGNED, autoIncrement: true, primaryKey: true},
name: Sequelize.STRING,
},
{
hooks: {
beforeCount(options) {
options.raw = true;
}
}
}); …Run Code Online (Sandbox Code Playgroud)