programing

MongoDB 노드는 결과를 처리하지 않는 방법을 찾으십니까?

subpage 2023. 5. 29. 10:53
반응형

MongoDB 노드는 결과를 처리하지 않는 방법을 찾으십니까?

나는 npm을 사용하고 있습니다.mongodb노드가 있는 드라이버입니다.

있습니다

collection.findOne({query}, function(err, result) {
    //do something
}

문제는 제가 아무런 결과가 없다는 것입니다.err아직도null내가 결과를 찾든 못 찾든쿼리에서 결과가 발견되지 않았는지 어떻게 알 수 있습니까?

저도 해봤어요.

info = collection.findOne(....

그런데 그.info정당한undefined(비동기적으로 보여서 어차피 갈 길은 아닌 것 같았어요...)

레코드를 찾을 수 없는 것은 오류 조건이 아니므로 찾을 수 있는 값이 없습니다.result일치하는 문서는 항상 "진실"이므로 단순한 문서를 사용할 수 있습니다.if (result)확인. 예:

collection.findOne({query}, function(err, result) {
    if (err) { /* handle err */ }

    if (result) {
        // we have a result
    } else {
        // we don't
    }
}

아래의 모든 답변은 구식입니다.findOne은 더 이상 사용되지 않습니다.사용을 제안하는 최신 2.1 문서

find(query).limit(1).next(function(err, doc){
   // handle data
})

간단히 말해:

collection.findOne({query}, function(err, result) {
    if (!result) {
        // Resolve your query here
    }
}

요즘 - 노드 8 이후 - 당신은 안에서 이것을 할 수 있습니다.async함수:

async function func() {
  try {
    const result = await db.collection('xxx').findOne({query});
    if (!result) {
      // no result
    } else {
      // do something with result
    }
  } catch (err) {
    // error occured
  }
}

결과가 null이면 mongo가 쿼리와 일치하는 문서를 찾지 못했습니다.몽고 쉘에서 쿼리를 시도해 본 적이 있습니까?

collection.findOne({query}, function(err, result) {
   if (err) { /* handle err */ }

   if (result.length === 0) {
    // we don't have result
   }
}

언급URL : https://stackoverflow.com/questions/10551313/mongodb-node-findone-how-to-handle-no-results

반응형