Strongloop Loopback:按相关模型的ID进行过滤
我有一些模型和关系的一个Strongloop Loopback Node.js项目。
手头的问题
我的问题涉及如何仅使用Angular SDK查询与某个Tag
ID有关系的Media
实例, 而不查询Tags.media
(返回Tag
实例),而是以某种方式进行查询以返回纯Tags.media
Media
实例。
请阅读下面的具体信息..
规格
基本上,我有一个模型Media
有许多“标签”(模型Tag
)。 想象一下具有各种EXIF标签( Tag
)的图像文件( Media
)。 这是关系规范(这一切都按预期工作):
媒体(media.json):
{ "name": "media", "base": "PersistedModel", "properties": { "id": { "type": "string", "id": true } }, "relations": { "tags": { "type": "hasAndBelongsToMany", "model": "tag" } }
标签(tag.json):
{ "name": "tag", "base": "PersistedModel", "idInjection": true, "properties": { "name": { "type": "string", "required": true } }, "relations": { "medias": { "type": "hasAndBelongsToMany", "model": "media" } }, "acls": [], "methods": [] }
解决scheme
现在,我知道我可以做这样的查询(在我的例子中使用Angular SDK,但语法是相同的):
injector.get('Tag').find({ 'filter': { 'include': 'medias', 'where': {'id': <mytagid>} } });
我用这种方法的问题是,我收到1( one
) Tag
实例与连接Media
实例。 这干扰了为什么整个工作stream程只处理Media
实例..我只是想通过Tag
ID进行过滤 ,而不是打扰Tag
。
底线
如果我看到API浏览器( /explorer/
),则GET /api/tags/<myTagID>/medias
的返回值正是我需要的 – 一个Media
对象数组 – 但是如何使用Angular SDK(lb_services)?
我有一个类似的问题。 一个build议是打开lb-services.js并尝试find:/ tags /:id / medias或类似的东西。 然后你会发现这样的评论:/ / 内部。 使用Tags.medias()来代替。 或类似的东西。 所以这是你应该调用的方法。 不要调用“prototype $ __ get …..”方法。
然后就打电话给我说:Tag.medias({id:})
其他build议:
正如你在描述中所说的,媒体有许多标签。 那么为什么不使用
{ "name": "media", "base": "PersistedModel", "properties": { "id": { "type": "string", "id": true } }, "relations": { "tags": { "type": "hasMany", <---------- hasMany "model": "tag", "foreignKey": "tagId" <---FK name } }
而标签只属于types。
{ "name": "tag", "base": "PersistedModel", "idInjection": true, "properties": { "name": { "type": "string", "required": true } }, "relations": { "medias": { "type": "belongsTo", "model": "media", "foreignKey": "mediaId" <---FK name } }, "acls": [], "methods": [] }
但真的我不认为这是问题,因为你说当你请求GET /api/tags/<myTagID>/medias
它返回你想要的。
那么,在AngularJS中,你可以使用:
Media.tags({id:<mediaId>})
对于media /:id / tags
并为对方尝试:
Tag.medias({id:<tagId>}) Tag.find({ filter:{ where:{mediaId: <mediaId>} <----mediaId comes from FK name } })
在这种情况下,两者都是持久性模型,没有任何问题,但是在使用扩展用户types的数据做类似事情时,我遇到了许可问题。 不过那是另一回事了…
希望这是有帮助的,我改变了一些类似的应用程序,我正在做的东西,并希望不适应你的代码时,这么多的错误…
- `哟angular度`给出错误:npm ERR! 代码ENOENT npm ERR! errno 34(是的,我已经清理caching并设置.npmignore)
- 离子内容只有在点击SideMenu后才显示出来
- 使用expressjs时,下载的.pdf文件已损坏
- CRUD – 将ID传递到新forms以执行更新操作
- 在离子中添加节点模块
- 使用Sequelize,NodeJS和AngularJS创build具有n:m关系的logging
- Angular页面到node.js服务器套接字连接
- 如何将后端错误/成功消息从Node.js发送到AngularJS控制器的前端?
- 在制作POST请求时返回空白PDF,但使用GET工作正常