0

所以我试图通过使用Addy Osmani 的书在我的 Backbone 应用程序中实现 CRUD 。我遇到的一个问题是,尽管我目前使用 express/mongoose/path 的 NodeJS 服务器的相同代码,但对于所有 CRUD 操作,我得到 404。这是我当前在 localhost 上的文件夹结构

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

所以根据指南,唯一需要设置的是集合中的 url

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

我期望的是,一旦我添加了一个模型,因为它是集合的一部分,它会创建一个集合(如果它不存在),然后将它与服务器同步。这可能会发生,但有一个例外

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

当然我认为那是不正确的,因为它可能需要查看路径

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

因为 mongoServer.js 在 myApplication 的文件夹中。我真的不知道如何解决这个问题。也许有人可以改变路线,或者我的实施逻辑存在缺陷?

编辑:另外澄清一下,我已经测试过了

url: '/myApplication/api/myModels'

XHR 完成加载,但 POST 仍然是 404。

4

1 回答 1

0

我遇到的一般问题是 Express 应用服务器的设置。造成麻烦的线路是

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

这基本上表明该应用程序的静态路径位于公共文件夹中(我显然没有)。当快递服务器监听您选择的端口时

app.listen(3000);

您实际想要访问的页面(例如您的 index.html 或 static.html)可以在下面找到

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

在 localhost 之后没有任何/myApplication。这也有助于应用程序本身的一般 url 设置,因为它实际上只需要/api/myModels

于 2012-10-17T12:17:24.613 回答