2012-10-17 3 views
2

mongoose에 내장 된 indexOf() 메소드를 사용하여 객체 ID가 doc 배열에 있는지 확인하려고합니다. 그러나 객체 ID를 사용하여 작동하는 것으로 보이지는 않습니다.MongooseArray # index 객체 ID로 작업하지 않음

console.log(user1.followers) # => [ '505e2f1de888c7d701000001' ] 
conosle.log(user2._id) # => 505e2f1de888c7d701000001 
console.log(user1.followers.indexOf(user2._id)) # => -1 

가 나는 또한 단지 사용자 2 개체를 전달하려했지만 같은 문제 :

var UserSchema = new Schema({ 
    , following : [{ type: Schema.ObjectId, ref: 'User'}] 
    , followers : [{ type: Schema.ObjectId, ref: 'User'}] 
}); 

다음과 같은 데이터의 날 -1

user1.followers.indexOf(user2._id); 

을주고있다

console.log(user1.followers.indexOf(user2)) # => -1 

마지막으로 1 번을보아야합니다. -1이 아니라 여기에 기록하십시오.

내가 뭘 잘못하고 있니? http://mongoosejs.com/docs/api.html#types_array_MongooseArray-indexOf

+0

매개 변수는 객체이어야합니다. 'user1.followers.indexOf (user2); ' – Joonas

+0

여전히 작동하지 않습니다. - isFollowing [ '50680445639190c06a000002', '505e2f1de888c7d701000001'] 505e2f1de888c7d701000001 – chovy

답변

0

내가 문제가 발견 : 여기

는 몽구스 문서입니다. 나는 세션에서 저장된 사용자를 사용하고 db에서 사용자 객체를 사용하지 않았습니다. 또한, 실제로 전달되는 객체 ID는 다음과 같습니다.

User.findById(req.session.userid, function(err, user){ 
    user2.isFollowing = user.following.indexOf(user2._id); 
}); 

세션의 객체 저장 상태가 좋지 않습니다. 항상 db에서 그들을 검색해야합니다. 그래서 그들은 부실하지 않고 당신은 진정한 몽구스 doc 객체를 가지고 있습니다. redis store의 json 객체가 아닙니다.

4

오래된 질문,하지만 난 한밤중 기름을 연소 다른 사람에 대한 내 솔루션 게시합니다 있도록이 최근 나 비트 :

user1.followers.indexOf(user2._id.toString()); 
관련 문제