현재 매우 이상한 몽구스 오류가 발생하며이 문제의 원인을 알 수 없습니다. findOne
메서드를 호출하면 _id
필드가 초기화되지 않은 유효한 인스턴스가 나타납니다. 나는 내가 간단한 스키마 정의가몽구스 findOne 메서드가 _id가 누락 된 유효한 문서를 검색합니다.
{ [CastError: Cast to ObjectId failed for value "[object Object]" at path "_id"]
message: 'Cast to ObjectId failed for value "[object Object]" at path "_id"',
name: 'CastError',
type: 'ObjectId',
value:
{ from_node_id: 52e10f6acce9daa7f3bf3162,
target_id: 'a' },
path: '_id' }
와 충돌 해당 문서의 변경 내용 저장하기 위해 노력하고있어 경우 :
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var transitionProbabilitySchema;
transitionProbabilitySchema = new Schema({
_id: {
from_node_id: {type: Schema.Types.ObjectId, ref: "Zone"}
},
value: {
total_transition_count: Number,
probabilities: [
{to_node_id: {type: Schema.Types.ObjectId, ref: "Zone"}},
{probability: Number}
]}
}, {collection: 'transitionProbability'});
module.exports = mongoose.model('transitionProbability', transitionProbabilitySchema);
을 때 나는 지금
TransitionProbability.findOne({"_id.from_node_id": from_node_id},
function (err, tp) {
if (err) {
handleError('error - tp not found', err, callback);
} else {
// some modification of tp and then save
}
}
몽구스 반환 전화 문서가 있지만 _id
만 초기화되지 않습니다. 전에 변경된 문서를 저장하려고 할 때 전체 함수가 충돌합니다. 또한 콘솔에 문서를 기록하여 '_id'필드가 누락되었는지 확인했습니다.
추 신 : from_node_id
은 다른 쿼리에서 추출되었으며 유효한 ObjectId
입니다.
아이디어가 있으십니까? 도와 주셔서 미리 감사드립니다.
편집 : _id 필드를 수동으로 설정해도 작동하지 않는 것 같습니다. 더욱 흥미로운 점은 다른 방법을 시도하면서 어떤 로그도없이 findOneAndUpdate
이 전체 node.js 앱을 정지한다는 것을 알았습니다. 단지 계속되지 않습니다.
원래 유효한 값으로 채워진 subdoc ref가있는 스키마가 있습니다. 나는 ref 값을 아무런 문제없이 undefined로 설정할 수있다. 그러나 유효한 값을 현재 정의되지 않은 ref 필드로 다시 설정하면 ObjectId로 캐스팅 오류가 발생합니다. 이 모든 것이 관련되어 있습니까? 몽구스 ~ 3.8.8을 사용하고 있습니다. –
채워진 값으로 문서를 검색 할 수 있으므로 문제가 다른 것 같습니다. 내 문제는 실제로 _id가 검색된 문서를 수정할 수 없게하는 유효한 값으로 채워지지 않는다는 것입니다. –
네, 그게 다릅니다. Express에 대한 MEAN.js 업데이트 스캐 폴드를 통해 채워진 문서를 업데이트하려고한다는 사실과 관련이 있습니다. 이 문제를 해결할 수있는 여러 가지 방법을 찾고 있지만 완전히 추악합니다 (예 : 부모 모델을 다시 쿼리하고 Express 컨트롤러에서 요청의 세부 정보를 수동으로 입력). 나는 몽구스가이 사건을 최소한 감지하고 더 나은 피드백을 제공하기를 희망했다. –