2012-10-16 51 views
0

所以我想通過使用book from Addy Osmani來實現CRUD到我的Backbone應用程序中。我遇到的其中一個問題是,儘管我目前對NodeJS服務器使用了相同的代碼,並且使用了express/mongoose/path,但我獲得了所有CRUD操作的404。下面是我在本地主機上Backbone RESTful CRUD 404

/ 
/myApplication/ (working dir) 
/myApplication/js (contains all js files from Backbone app) 
/myApplication/mongoServer.js (the server app) 

所以根據指南,必須設置的唯一的事當前文件夾結構集合

myCollection = Backbone.Collection.extend({ 
model: myModel, 
url: '/api/myModels' 
... 
}) 

在URL中我會想到的是,一旦我添加一個模型,因爲它是集合的一部分,它會創建一個集合(如果它不存在),然後將其與服務器同步。這可能發生,但有一個例外

POST http://localhost/api/todos 404 (Not Found) 

當然,我認爲這是那不是正確的,它可能需要查看路徑

POST http://localhost/myApplication/api/todos 

因爲mongoServer.js是所有MyApplication的文件夾中。我真的不知道如何解決這個問題。也許人們可能會改變路線,或者我的邏輯實施中存在缺陷?

編輯:另外爲了澄清,我已經測試

url: '/myApplication/api/myModels' 

的XHR完成加載,但POST仍然是404

+0

您是否嘗試過網址以查看它是否可以運行? –

+0

*編輯*使用http:// localhost:3000/myApplication /完美的工作,所以我想它只能工作,如果端口被給出或快車運行在80端口,對不對? – toxicate20

+0

您可以使用ngnix重新路由api以通過端口80.既可以,也可以使用完全限定的URL(包含端口),但這將被視爲跨域XHR請求,這是另一個問題。 –

回答

0

我在與快遞設置的一般問題應用服務器。導致該故障的線路是

app.configure(function() { 
app.use(express.static(path.join(application_root, "public"))); 
}); 

這基本上告訴表達到應用程序的靜態路徑是在公共文件夾(我沒有很明顯)。由於Express服務器偵聽的端口您通過

app.listen(3000); 

,你實際上要訪問(如您的index.html或static.html)的頁面可以在

http://localhost:3000/index.html or static.html 

發現沒有任何選擇本地主機之後的/myApplication。這也有助於在應用程序本身的一般url設置,因爲它真的只需要/api/myModels

相關問題