次のような、データを取得してオブジェクトに貼り付ける 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
。
等。