0

そのため、Addy Osmaniの本を使用して、CRUD を Backbone アプリに実装しようとしています。私が遭遇する問題の 1 つは、現在 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'
 ...
})

私が期待するのは、モデルを追加すると、コレクションの一部であるため、コレクションが作成され (存在しない場合)、サーバーと同期されることです。これはおそらく起こりますが、1つの例外があります

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")));
});

これは基本的に、アプリへの静的パスがパブリックフォルダーにあることを明示的に示しています(私は明らかに持っていませんでした)。Expressサーバーは、選択したポートをリッスンします。

app.listen(3000);

実際にアクセスしたいページ(index.htmlやstatic.htmlなど)は、以下にあります。

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

ローカルホストの後に/myApplicationがない場合。これは、アプリ自体の一般的なURL設定にも役立ちます。これは、実際には/ api/myModelsである必要があるためです。

于 2012-10-17T12:17:24.613 に答える