Mongoose findOneAndUpdate 및 uversert에서 오류 및 영향을 받는 문서를 반환하지 않습니다.
저는 아주 최소한의 모델을 가지고 있습니다.
var CompanySchema = new mongoose.Schema({
name: { type: String, required: true, unique: true },
});
var Company = mongoose.model('Company', CompanySchema)
문서가 존재하지 않으면 하나의 문서를 추가하려고 합니다.현재 테스트하는 동안 문서가 없습니다.
models.Company.findOneAndUpdate({
name: 'companyName'
}, {upsert: true}, function(err, numberAffected, raw){
console.log(err, numberAffected, raw)
})
이것은 Mongoose 문서의 옵션을 사용하고 있습니다.
하지만err
이라null
,numberAffected
null입니다.문서가 업데이트되지 않는 이유는 무엇입니까?
Mongoose 4+ 이후에는 upsert와 함께 true를 설정하는 것을 잊지 마십시오. 그렇지 않으면 이전 문서를 업데이트된 문서가 아닌 반환 값으로 얻을 수 있습니다.
이것은 특히 new:true를 지정하지 않고 null 문서(기존 문서가 없음)를 수신하지만 오류가 없는 경우와 같이 요청이 문서를 작성할 때 매우 까다롭습니다.
var myObj = ...;
collection.findOneAndUpdate(
{uniqueAttr: myObj.uniqueAttr},
myObj,
{upsert: true, new: true},
function(...) {...}
당신의 코드에서 당신은 메소드의 3 파라미터 버전을 사용하고 있습니다.findOneAndUpdate
따라서 게시한 문서에 따르면 매개 변수는 다음과 같습니다.A.findOneAndUpdate(conditions, update, callback)
.
방법의 네 번째 모수 버전을 사용하여 업서트 옵션을 지정해야 합니다.
저는 mongoose라는 프레임워크를 사용한 적이 없다는 것을 지적하고 싶습니다.이게 도움이 되길 바랍니다.
편집: 예, 당신의 경우,conditions
그리고.update
똑같습니다.개체가 예제에 표시된 것보다 더 복잡할 경우 _id 또는 "unique"(MongoDB에서 보장하지 않음) 특성(인덱스가 있는 경우 더 좋습니다)을 확인할 수 있습니다.예:
var myObj = ...;
collection.findOneAndUpdate({uniqueAttr: myObj.uniqueAttr}, myObj, {upsert: true}, function(){
...
});
언급URL : https://stackoverflow.com/questions/25116522/mongoose-findoneandupdate-and-upsert-returns-no-errs-no-documents-affected
'sourcecode' 카테고리의 다른 글
새 Firebase 콘솔에서 데이터베이스 및 스토리지 사용량을 확인하는 방법 (0) | 2023.07.13 |
---|---|
IntelliJ IDEA 엔드포인트 탭을 표시하지 않음: "응용 프로그램 JMX 서비스 URL을 검색하지 못했습니다." (0) | 2023.07.13 |
ASP.NET에서 기본 페이지를 설정하는 방법은 무엇입니까? (0) | 2023.07.08 |
SQL Server - 저장 프로시저가 완료될 때까지 테이블을 잠그는 방법 (0) | 2023.07.08 |
현재 지점에서 커밋할 사항이 없는지 어떻게 확인합니까? (0) | 2023.07.08 |