0

基本的にタイトルの内容 - 「id」に入力したすべての ID で 404 Not Found を取得しています。

dpd.items.get("id", function(results, error) {
 console.log(results);
});

そして、「id」の任意の値に対する 400 Bad Request:

dpd.items.put("id",{category:value},function(results, error){
 console.log("Record updated");
});

すべての id 値は Deployd ダッシュボードに存在し、ID 以外のカテゴリ パラメータを使用して get リクエストを行うことができます。

この時点ですべてを試したような気がします。助けてください!

4

2 に答える 2

0

このエラーは、展開されたクライアントとは異なるクライアントを介してドキュメントを挿入した場合に発生する可能性があります。

ここから:

_id フィールドが指定されていない場合、MongoDB は ObjectIds を _id フィールドのデフォルト値として使用します。クライアントが _id フィールドを追加しない場合、mongod は ObjectId を保持する _id フィールドを追加します。

mongoDB によって作成された ID はデプロイされたダッシュボードに表示されますが、それらは (デプロイされたによって生成された ID のような) 通常の文字列ではなく、文字列を探しているときにデプロイされた ID が見つかりません。

他の mongoDB クライアント (例: Robomongo )で次のようなクエリを実行してみてください。

db.yourcollection.find({_id: ObjectId("some_id_you_know_exists_in_collection")})

エラーがスローされない場合、ID は、デプロイによって作成されたのではない ObjectId である可能性が高くなります。

残念ながら、簡単な修正はありません。(少なくとも、大きなコレクションや複雑なアプリの場合はそうではありません。) 小さなコレクションの場合は、データを新しいコレクションに複製し、展開して新しい ID を作成することをお勧めします。

クイック、汚い、テストされていない:

dpd.collection.get({}, function(res) {
    _.each(res, function(object){
        object.oldId = object.id //add id backup 
        delete object.id

        // post new object without id -> deployd creates a new id
        dpd.newcollection.post(object, function(res, err) {
            if(err) {
                console.log(err);
            };
            if(res) {
                console.log(res);
            };
        })
    });
})

それが自分に合っているかどうかは、自分で判断する必要があります。

于 2015-03-02T12:27:01.860 に答える