2012-03-29 5 views
1

기존 문서 필드에 포함 된 문서를 추가하려고합니다. 검색을 사용하여 one fitting answer을 찾았지만 오류가 발생했습니다. 나는 node.js, Express 및 Mongoose를 사용하고 있습니다.포함 된 문서 배열에 문서 추가

내 데이터베이스 스키마 : 내가 놓친 무엇 TypeError: Object.keys called on non-object

:

var entry = new Schema({ 
    name  : { type : String, required : true}, 
    description : { type : String, default: ""}, 
}); 

var compo = new Schema({ 
    name  : String, 
    description : String, 
    entries  : [entry] 
}); 

그리고 나는 다음과 같은 코드를 사용하여 항목의 배열을 업데이트하기 위해 노력하고있어이

var entry = new entryModel(); 
entry.name = "new name"; 
entry.description= "new description"; 

compoModel.findOne(query, function (err, item) { 
    if (item) { 
    item.entries.push(entry); 
    item.save(function (err) { 
     if (!err) { 
     log.debug('Entry added successfully.'); 
     } else { 
     log.error("Mongoose couldn't save entry: " + err); 
     } 
    }); 
    } 
}); 

이 오류를 얻을 수 ?

답변

1

그래서 나는 메서드를 통해 compo.entries 목록에 새 개체를 추가하고 compoModel.update을 호출하는 방식으로 작동하도록했습니다.

1

비슷한 문제 (동일한 오류)가 하위 문서 배열을 지워서 해결되었습니다. 하위 문서 체계를 정의하기 전에 채워졌습니다. 적어도 이것은 내가 생각한 것입니다. 그래서, 삭제 토큰 나를 위해 그것을했다 ..

{ username: 'foo', tokens: ['123456'] } 

:

예컨대 :

var token = new Schema({ value: String, expires: Date }) 
var user = new Schema({ username: String, tokens: [token] }) 

.. 그리고, 이전에 '토큰'방식을 정의하는 내가 같은 항목을했다.

user.tokens = [] 
user.save() 
관련 문제