Sails 1.0 无法访问自动生成的关联实体路由

Sails 1.0 cannot access autogenerated associated entity routes

我在客户和预算之间有如下关联:

//Client.js
module.exports = {
  primaryKey: 'id',

  attributes: {
    id: {
      type: 'number',
      unique: true,
      autoIncrement: true
    },
    name: {
      type: 'string'
    },
    phone: {
      type: 'string',
      unique: true
    },
    email: {
      type: 'string',
      unique: true
    },
    budgets: {
      collection: 'budget',
      via: 'client'
    },
  }
};


// Budget.js
module.exports = {
  primaryKey: 'id',

  attributes: {
    id: {
      type: 'number',
      unique: true,
      autoIncrement: true
    },
    client: {
      model: 'client'
    },
    budgetItems: {
      type: 'json'
    }
  }
};

所以,POST 对两个实体都有效,所以我可以创建它们,但是:

 GET /budget/1

returns 关联客户的预算和 ID。

 GET /budget/1/client

returns 没有填充的客户端 ID(正如我在 documentation 中看到的那样,它应该被填充)。

 GET /client/1

return客户属性,没有与预算相关的字段。

 GET /client/1/budgets

return未找到 404

我正在关注 this and this 官方文档

那么我可能遗漏了什么?

只是生成一个方向关联,我已经与官方文档和第三方示例进行了比较,我的代码看起来不错。

提前致谢!

更新:

我还在找麻烦,如果我 运行 使用 --silly 选项航行,它表明有以下可用路线:

Binding route :: get /client/:parentid/budgets POLICY: localize
Binding route :: get /client/:parentid/budgets POLICY: isauth
Binding route :: get /client/:parentid/budgets BLUEPRINT: populate

但是如果我尝试访问 returns 404 Not Found 并且控制台显示以下错误,由来自 Sails 核心代码的 populate.js 抛出:

verbo: In populate blueprint action: Specified parent record (1) does not have a budgets.

更新2:

使用 sails 控制台进行调试我已经看到关联已正确生成。给定 Client.findOne({id: 1}).populate('budgets').then((client)=>{console.log(client)}) 打印客户属性和相关预算,但仍然 return 404 Not Found when: GET /client/1/budgets

我已经创建了快速演示,它对我来说似乎工作正常。

对于演示,我使用了 sails 版本 1.2.2sails-disk 作为数据库,并且在模型属性如下 Client.js

module.exports = {
  attributes: {
    name: {
      type: 'string'
    },
    phone: {
      type: 'string',
      unique: true,
      required: true
    },
    email: {
      type: 'string',
      unique: true,
      required: true
    },
    budgets: {
      collection: 'Budget', // <<== B is capital here
      via: 'client'
    },
  },
};

Budget.js

module.exports = {
  attributes: {
    client: {
      model: 'Client' // <<== C is capital here
    },
    budgetItems: {
      type: 'json'
    }
  },
};

如果有帮助请告诉我

感谢 SailsJS 团队,我们发现了问题,它与第三方包有关,只需将其从我的项目中删除。 sails-hook-deep-orm 谁的主人被警告过。我希望有同样问题的人能达到这个 post.

谢谢大家!!

问题可用there