有没有人用过 loopback 感觉很不错啊 在学习这个 有点不明白的地方
发布于 6 年前 作者 AaronLeong 5604 次浏览 最后一次编辑是 5 年前 来自 问答

1.内嵌文档怎么用api来查询呢? 2.一对多的文档,怎么在内嵌部分插入数据 3.发现一个好玩的的https://github.com/beeman/loopback-angular-admin

21 回复

深夜来给你作答吧

1、内嵌文档怎么用api来查询呢?

你这里说的内嵌,意思不明确,是说直接把数据库的字段类型设置为你定义的某个Model呢,还是使用loopback的relation将两个Model进行关联,那这里我就给你分别分两种情况来讨论。

如果是前者,就是MongoDB里面的子文档,查询方法就很简单啦,比如你定义了一个模型A中的字段A.foo的类型是模型B,然后B中有字段B.moo,那要对A中的数据进行B.moo查询的话,可以用:

$ curl -XGET http://your-server/api/A?filter[where][foo.moo]=true

具体可以查看:https://docs.strongloop.com/display/public/LB/Where+filter

至于第二种连接的情况,要看你使用的是什么类型的关系,然后查询的时候据我所知是不可以根据所关联的Model中其他字段来进行直接过滤、查询,所以一般都是要在URI中声明两个参数:id和关联Model的查询条件,比如:

$ curl -XGET http://your-server/api/A/:aid/B?filter[where][moo]=true

具体你要查阅Relation所对应的文档:https://docs.strongloop.com/display/public/LB/Creating+model+relations

2、一对多的文档,怎么在内嵌部分插入数据

首先是这里你说的1:N的关系,对应于hasMany关系,在第一个问题的回答末尾我有提到,就是一般需要提供一个你内嵌的文档所依赖的父文档的Id,然后剩下的就真的和直接操作文档没有什么区别啦,比如插入内嵌文档的操作是:

$ curl -XPOST http://your-server/api/A/:aid/B ...(Headers/Body等等)

另外,LoopBack的hasMany包括M:N的hasManyThrough的操作都不会直接影响于父Model,也就是说上面的请求虽然是说在A(id=aid)中添加了一个B的文档,然后B的数据是存储在B的集合/表中,所以当你通过A的查询接口返回A的实例时,你可能只能看到比如bid这样的字段,也就是一般我们说的,LoopBack只有hasAndBelongsToMany才有populate的功能。

所以我的建议是,如果想在hasMany中可以直接查询B中的数据,可以使用LoopBack提供的Model Observer在A中缓存一个B的快照,并且在每次更新的时候,利用Observer写入/更新缓存就好。

另外,欢迎多多使用LoopBack :-)

@yorkie 终于找回这个账号了,前段时间忙,就忘了账号密码了,现在还在学习这个 自豪地采用 CNodeJS ionic

嗯 另外我也更新一下答案:你可以用 embedsMany relationship

@yorkie 看你在开发CRM,lookback适合么 自豪地采用 CNodeJS ionic

@violet-day 尝试过么 自豪地采用 CNodeJS ionic

@AaronLeong crm没有做过,但是loopback很适合这种企业级的应用

loopback 用着还是不错的, 只是偶尔有些小坑,issue处理不及时问题

@Neil-UWA 请问直接创建Api就可以了达到商用了么,用不用修改代码(除了业务逻辑) 自豪地采用 CNodeJS ionic

@AaronLeong ACL需要仔细调一调的~

@MiguelValentine 好的呀 你加我微信 yorkiefier 要是有空到你的城市 就喝一杯 :-)

@MiguelValentine 好的呀 你住哪里?

@yorkie 卧槽。我以为我睡的够晚。。七宝

@MiguelValentine 。。。。我也住七宝。。。。

@yorkie 啧啧,周末星巴克

@MiguelValentine 嗯嗯 你先加我微信吧 在论坛上聊不太好~

@yorkie 想问一下如果是web的话都是直接ajax么 还是可以设置express那样的路由

@yorkie 玩lb玩了多久拉

回到顶部