1.内嵌文档怎么用api来查询呢? 2.一对多的文档,怎么在内嵌部分插入数据 3.发现一个好玩的的https://github.com/beeman/loopback-angular-admin
深夜来给你作答吧
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
@AaronLeong 合适。。。
@violet-day 尝试过么 自豪地采用 CNodeJS ionic
@AaronLeong crm没有做过,但是loopback很适合这种企业级的应用
@yorkie 约喝咖啡
loopback 用着还是不错的, 只是偶尔有些小坑,issue处理不及时问题
@Neil-UWA 请问直接创建Api就可以了达到商用了么,用不用修改代码(除了业务逻辑) 自豪地采用 CNodeJS ionic
@AaronLeong 完全没问题
@AaronLeong ACL需要仔细调一调的~
@MiguelValentine 好的呀 你加我微信 yorkiefier 要是有空到你的城市 就喝一杯 :-)
@yorkie 我就在上海
@MiguelValentine 好的呀 你住哪里?
@yorkie 卧槽。我以为我睡的够晚。。七宝
@MiguelValentine 。。。。我也住七宝。。。。
@yorkie 啧啧,周末星巴克
@MiguelValentine 嗯嗯 你先加我微信吧 在论坛上聊不太好~
@yorkie 想问一下如果是web的话都是直接ajax么 还是可以设置express那样的路由
@yorkie 玩lb玩了多久拉