mongoose _idと文字列の比較 質問する

mongoose _idと文字列の比較 質問する

次のような、データを取得してオブジェクトに貼り付ける node.js アプリケーションがあります。

var results = new Object();

User.findOne(query, function(err, u) {
    results.userId = u._id;
}

保存した ID に基づいて if/then を実行すると、比較は true になりません。

if (results.userId == AnotherMongoDocument._id) {
    console.log('This is never true');
}

2 つの ID の console.log を実行すると、それらは完全に一致します。

User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002

これは何らかのデータ型の問題であると想定していますが、results.userId を上記の比較が真となるデータ型に変換する方法がわかりません。また、私のアウトソーシングされた頭脳 (つまり Google) も役に立てませんでした。

ベストアンサー1

Mongoose は、カスタム ObjectID タイプを使用する mongodb-native ドライバーを使用します。ObjectID を メソッドと比較できます.equals()。例では、 です。ObjectID タイプには、ObjectID の文字列化されたバージョンを JSON 形式または Cookie で保存する場合の メソッドresults.userId.equals(AnotherMongoDocument._id)もあります。toString()

ObjectID = require("mongodb").ObjectID(mongodb-native ライブラリが必要)を使用する場合は、 を使用してresults.userIdが有効な識別子であるかどうかを確認できますresults.userId instanceof ObjectID

等。

おすすめ記事