标签: feathers-sequelize

Feathers.js/Sequelize - >服务与两个模型之间的关系

我有通过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中我需要做什么?

mysql node.js sequelize.js feathersjs feathers-sequelize

7
推荐指数
2
解决办法
5167
查看次数

FeathersJS 似乎将查询限制为 1000,即使您将 $limit 设置为高于 1000

我经常使用羽毛并且喜欢它,但我需要返回超过 1000 条记录作为特殊情况。但是,无论我做什么,Feathers 都会返回一个将 $limit 重置为 1000 的查询,并且只返回 1000 条记录。

我知道它正在传达我的 $limit,因为如果我将限制设置为 1、10、500 或 999,它会尊重它,但如果我将其设置为 1001 或更高的值,它只会返回 1000。

我将feathers与MySQL和feathers-sequalize一起使用。

mysql feathersjs feathers-sequelize

6
推荐指数
1
解决办法
3219
查看次数

如何在续集中查询多对多关系

我通过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'

但它没有工作因为没有像"参与者"这样的列被包含在内,所以我无法查询它.所以现在我只是获取所有事件并在挂钩后为当前用户过滤它们,但它似乎是错误的.这样做的正确方法是什么?

并且我知道我可以通过将用户包含在用户中并获取他来获取用户是参与者之一的事件但是问题是我无法将所有数据排序在一起,它被单独排序而另一个问题是在前端进行分页.

sequelize.js feathersjs feathers-sequelize

5
推荐指数
1
解决办法
757
查看次数

Sequelize js ,我们如何在迁移中更改列类型

我们如何在迁移中更改列类型。在我的迁移 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)

迁移 2(创建新迁移是否会像这样工作?仍然是 addColumn 但我将类型更改为文本)

  await queryInterface.addColumn(SampleModel.tableName, 'name', {
      type: Sequelize.TEXT,
      allowNull: true,
    }, {
      transaction,
    });
Run Code Online (Sandbox Code Playgroud)

javascript node.js sequelize.js feathers-sequelize

5
推荐指数
2
解决办法
1万
查看次数

Feathers-Sequelize:hasMany 只返回第一个结果,扁平化

我今天第一次尝试了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)

sequelize.js feathersjs feathers-sequelize

4
推荐指数
1
解决办法
785
查看次数