2016-05-30 62 views
2

我的問題基本上是,我如何爲超過3個相關模型啓用nestRemoting(nested queries for related models)?爲兩個以上級別啓用nestRemoting(對於嵌套查詢)

目前我正在使用4個相關模型,並希望能夠一直向上或向下進行嵌套查詢,現在我只能爲3個模型(即2個級別和2個級別下)。

什麼工作:

因此,例如,我有我的帳戶模型,該模型是一切的根源,即所有其它車型最終導致帳戶),然後我也假設項目,文件夾,然後照片作爲葉子。

我已經配置了我的關係,它工作得很好,例如,

  • 帳戶的hasMany項目
  • 項目的hasMany文件夾
  • 文件夾的hasMany照片

和周圍的其他方法還有:

  • 照片屬於關聯文件夾
  • 文件夾屬於關聯項目
  • 項目屬於關聯賬戶

終於在我的代碼我說:

// Configure one way of the relation 
Account.nestRemoting('projects'); 
Project.nestRemoting('folders'); 
Folder.nestRemoting('photos') 

// Configure the other way of the relation 
Photo.nestRemoting('folder') 
Folder.nestRemoting('project') 
Project.nestRemoting('account'); 

這工作奇妙,讓我很喜歡

/api/Accounts/<account id>/projects/<project id>/folders 

東西才能拿到屬於一個文件夾列表到那個帳戶。

,反之亦然,我能夠做的其他方式:

/api/Photos/folder/project/ 

但是:

當我嘗試多了一個嵌套的水平在任何一個方向,我得到一個添加到查詢錯誤。

I.e.如果我嘗試做

/api/Accounts/<account id>/projects/<project id>/folders/<folder id>/photos 

,或者如果我做

/api/Photos/folder/project/account 

我收到以下錯誤:

"name": "Error", 
"status": 404, 
"message": "Shared class \"Account\" has no method handling GET /<uuid>/projects/<uuid>/folders/<uuid>/photos?access_token=XXXXXXXXXXXXXXX", 
"statusCode": 404, 
"stack": "Error: Shared class \"Account\" has no method handling GET /<uuid>/projects/<uuid>/folders/<uuid>/photos?access_token=XXXXXXXXXXXXXXX\n at restRemoteMethodNotFound (/myserver/node_modules/loopback/node_modules/strong-remoting/lib/rest-adapter.js:322:17)\n at Layer.handle [as handle_request] (/myserver/node_modules/loopback/node_modules/express/lib/router/layer.js:95:5)\n 

(我更換爲redability實際的ID)

但是,只有當我嘗試查詢模型上方的2個以上的級別(或2級以下)時,纔會觸發此錯誤。

因此,舉例來說,如果我下面開始(例如,在項目,而不是賬戶)一層:

/api/Projects/<project id>/folders/<folder id>/photos 

這工作得很好。

或者周圍的其他方法:這告訴我的方法和一切工作按預期但對嵌套水平的限制

/api/Folders/project/account 

回到我原來的問題,我該如何添加更多級別嵌套查詢?有什麼我可以配置沒有修改loopback的源代碼?

順便說一句,我的數據源是一個MongoDB實例(即MongoDB的連接器)

謝謝!

+1

我不認爲這是現成可用的。查看[相關的github問題](https://github.com/strongloop/loopback/issues/2346)。檢查可能的解決方法的註釋。 –

+0

你似乎是對的。謝謝伊凡! 我期待着看我是否可以添加一些東西,以使其工作。 – Acapulco

回答

2

@Ivan Schwarz是對的。事實證明,這不是一個錯誤,而是一個不受支持的功能。

The details are here

在代碼中摸索之後,我發現根本問題是在兩個以上的模型之間沒有定義關係,所以沒有辦法像現在這樣遍歷依賴樹。

所需的變化涉及以某種方式遍歷相關模型的關係和後者的關係,等等,但現在遍歷沒有編碼。

解決方法是基本上手動定義您自己的遠程方法,然後調用它。