Gelincik _ıd karşılaştırma ve dizeleri
Bazı veri çeker node.js bir uygulama var ve bu gibi: bir nesneye yapışır
var results = new Object();
User.findOne(query, function(err, u) {
results.userId = u._id;
}
Eğer/o zaman saklı kimliğine göre ben ne zaman, karşılaştırma hiç doğru değildir:
if (results.userId == AnotherMongoDocument._id) {
console.log('This is never true');
}
Bir konsol.iki kimliği günlüğü, tam olarak uyuyorlar:
User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002
Bu veri türü bir problem olduğunu sanıyorum, ama sonuçları dönüştürmek için nasıl emin değilim.karşılaştırma yukarıdakilerin hiçbiri doğru neden olacak bir veri türü için kullanıcı kimliği ve dış kaynaklı beynim (aka Google) yardım için başarılı olamadı.
CEVAP
Gelincik özel Objectıd türünü kullanan mongodb-yerel sürücüyü kullanır. .equals()
yöntemi ile ObjectİDs karşılaştırabilirsiniz. , results.userId.equals(AnotherMongoDocument._id)
örnek. Objectıd türü de toString()
bir yöntem ise JSON formatında Objectıd bu stringified bir sürümü saklamak istiyorsanız, ya da bir çerez var.
Eğer ObjectID = require("mongodb").ObjectID
gerektirir mongodb-yerel kütüphane () kullanırsanız eğer results.userId
results.userId instanceof ObjectID
geçerli bir tanımlayıcı olup olmadığını kontrol edin.
Vb.
Neden Python karşılaştırma dizeleri ku...
Referans karşılaştırma (==) bazı dizel...
Son Java ilan eden == ile karşılaştırm...
JSON çok satırlı dizeleri...
Java Dizeleri ve Tamsayılar boş değerl...