2016-11-29 2 views
0

매우 간단한 일대 다 관계가 있는데, User의 목록은 Alerts입니다. 이를 위해, 나는 다음과 같은 스키마 정의했습니다 : 이제몽구스를 사용하여 Node.js에 일대 다 관계를 저장합니다.

var userSchema = new Schema({ 
    email: String, 
    alerts: [{type: Schema.Types.ObjectId, ref: 'Alert'}] 
}); 
var User = mongoose.model('User', userSchema); 

var alertSchema = new Schema({ 
    _creator: {type: Schema.Types.ObjectId, ref: 'User'}, 
    value: String, 
}); 
var Alert = mongoose.model('Alert', alertSchema); 

을, 나는 새로운 Alert를 생성하고 데이터베이스에서 기존 User에 추가하는 함수를 만들려고 해요. 나는 데이터베이스를 검사 할 때

function createAlertForUser(userId, value) { 
    User.findOne({_id: userId}, function (error, user) { 

     var alert = new Alert({ 
      _creator: userId, 
      value: value 
     }); 

     alert.save(function (error, alert) { 

      // push it to the user 
      user.alerts.push(alert); 
      user.save(function(error) { 
       console.log("saved"); 
      }); 
     }); 
    }); 
} 

그러나, 내가 경고의 사용자 목록에 null 값을 저장하는 것 같다 : 다음 코드 (코드가 짧은 때문에 오류 처리를 제거)를 가지고있다. 내가 누락 된 아이디어가 있습니까?

+0

userId가 여기에 사용될 때 이미 ObjectId인지 확실합니까? – Paul

답변

1

전체 Alert 개체를 ObjectId의 배열로 푸시합니다.

대신을 시도해보십시오

user.alerts.push(alert.id); 

또는

user.alerts.push(alert._id); 

이 모두 정확합니다.

+0

실제로 개체 대신 ID를 사용하는 것이 근본적인 문제였습니다. – Henrique