복붙노트

[MONGODB] 몽구스 findOne를 사용하는 방법

MONGODB

몽구스 findOne를 사용하는 방법

(이 커피 스크립트에 있음을 사과) 나는 스키마 아래에 있습니다

Schema = mongoose.Schema

AuthS = new Schema
    auth:   {type: String, unique: true}
    nick:   String
    time:   Date
Auth = mongoose.model 'Auth', AuthS

난 그저 내 데이터베이스에 확실히 하나 개의 레코드를 복구 할 :

Auth.findOne({nick: 'noname'}, function(obj) { console.log(obj); });

불행하게도 이것은 항상 널 (null)를 기록합니다. db.auths.findOne ({닉 : '제목 없음'}) 몽고에서 항상 값을 반환 쉘. 무슨 일입니까?

해결법

  1. ==============================

    1.대신 사용 기능 (ERR, OBJ)의 문제, 필요 발견 :

    대신 사용 기능 (ERR, OBJ)의 문제, 필요 발견 :

    Auth.findOne({nick: 'noname'}, function(err,obj) { console.log(obj); });
    
  2. ==============================

    2.몽구스는 기본적으로 쿼리를 정확히 MongoDB의 쿼리처럼 될 수 없습니다, 그래서 당신에게 의사 관계형 DB의 API를 제공하여 MongoDB의 API를 래핑합니다. 몽구스 findOne 질의는 질의 객체가 아닌 문서를 반환합니다. 솔루션이 제안 또는 그 때는 사용하거나 await를 / 비동기 문서를 검색 할 수 있도록 V4 + findOne의 같은 thenable를 반환으로 당신도 콜백을 사용할 수 있습니다.

    몽구스는 기본적으로 쿼리를 정확히 MongoDB의 쿼리처럼 될 수 없습니다, 그래서 당신에게 의사 관계형 DB의 API를 제공하여 MongoDB의 API를 래핑합니다. 몽구스 findOne 질의는 질의 객체가 아닌 문서를 반환합니다. 솔루션이 제안 또는 그 때는 사용하거나 await를 / 비동기 문서를 검색 할 수 있도록 V4 + findOne의 같은 thenable를 반환으로 당신도 콜백을 사용할 수 있습니다.

    // thenables
    Auth.findOne({nick: 'noname'}).then(err, result) {console.log(result)};
    Auth.findOne({nick: 'noname'}).then(function (doc) {console.log(doc)});
    
    // To use a full fledge promise you will need to use .exec()
    var auth = Auth.findOne({nick: 'noname'}).exec();
    auth.then(function (doc) {console.log(doc)});
    
    // async/await
    async function auth() {
      const doc = await Auth.findOne({nick: 'noname'}).exec();
      return doc;
    }
    auth();
    
    

    당신은 타사 약속 라이브러리를 사용하고자하는 경우 문서를 참조하십시오.

  3. ==============================

    3.당신은 내장 된 "인수"개체와 CONSOLE.LOG 사용을 고려 할 수 있습니다 :

    당신은 내장 된 "인수"개체와 CONSOLE.LOG 사용을 고려 할 수 있습니다 :

    console.log(arguments); // would have shown you [0] null, [1] yourResult
    

    모든 인수이는 항상 출력, 당신이 얼마나 많은 인자에 상관없이.

  4. ==============================

    4.[0] .nick을 OBJ 사용하고 결과를 원하는 얻을 것이다,

    [0] .nick을 OBJ 사용하고 결과를 원하는 얻을 것이다,

  5. ==============================

    5.내 경우에는 같은 오류가 나는 findOne에 대한 AWAIT를 추가하려면이 요구 Asyanc / 기다리고 있습니다 기능을 사용하고,이

    내 경우에는 같은 오류가 나는 findOne에 대한 AWAIT를 추가하려면이 요구 Asyanc / 기다리고 있습니다 기능을 사용하고,이

    Ex:const foundUser = User.findOne ({ "email" : req.body.email });
    

    위 foundUser는 항상 findOne을 완료하기 전에 값을 반환 있기 때문에 사용자 중 하나가 아닌지 발견 두 경우 모두에서 개체 값이 포함되어 있습니다.

    const foundUser = await User.findOne ({ "email" : req.body.email });
    

    사용자가 제공 한 조건 컬렉션없는 경우 위, foundUser의 NULL을 반환합니다. 사용자 발견 반환 사용자 문서의 경우.

  6. from https://stackoverflow.com/questions/7033331/how-to-use-mongoose-findone by cc-by-sa and MIT license