0

node.jsのmongodoネイティブライブラリを使用しています。

これが機能していないコードスニペットです。db.open呼び出しは、エラーなしで失敗します。db.open呼び出し内のconsole.logステートメントは出力されず、db値も更新されません。イライラするエラー。これを解決する方法についての手がかりはありません。どんな助けでも大歓迎です。

function updateFriend(friendId, loc) {
        var input = JSON.parse(JSON.stringify("{FRIENDS.PHONE_NUMBER :" + friendId + "}"));
        db.open(function(error, client) {
          console.log("##########################" );
          console.log("######INPUT :::: " + JSON.stringify(input));
          if(error) throw error;
          var collection = new mongodb.Collection(client, 'test_collection');
          collection.update(input, {"$set":{"FRIENDS.$.LOC":"12.32, 88.33"}}, {safe:true}, function(err) {
            db.close();
          });
        });
}

これが私が更新しようとしているmongoコレクションです:

{ "FRIENDS" : [ { "PHONE_NUMBER" : "1476516777", "LOC" : "", "NAME" : "A2" } ], "OCCASION" : "cafe", "MYLOCATION" : "13.0390433,77.554942", "MYID" : "695913809", "_id" : ObjectId("503b4e41f1d9b7913d000001") }

編集:このコマンドを使用した手動のデータベース更新は問題なく機能します。

db.test_collection.update({"FRIENDS.PHONE_NUMBER":"1599181298"},{$set:{"FRIENDS.$.LOC":"13,14"}},false,true);
4

1 に答える 1

0

2つのこと

  1. リクエストごとに新しいdb接続を開かないでください。アプリで一度開いて、アプリケーション全体で同じdbインスタンスを再利用してください。他のデータベースにアクセスする必要がある場合は、次のようにします

    var db1 = db.db('someotherdb')
    
  2. コレクションオブジェクトを作成せず、db.collectionメソッドを使用します。コレクションオブジェクトは作成されることを意味するものではなく、可能であればプライベートコンストラクターになります。以下をせよ。

    var collection = db.collection('mycollection')
    

ドライバーのドキュメントはこちら

http://mongodb.github.com/node-mongodb-native/

幸運を祈ります

于 2012-08-27T20:44:39.453 に答える