복붙노트

[MONGODB] 아무것도 .find 발견하지 않는 경우 몽구스) (무언가를

MONGODB

아무것도 .find 발견하지 않는 경우 몽구스) (무언가를

나는 MongoDB의 일부 데이터를 저장 및 JS / nodejs와 몽구스으로 접근하고있다. 나는 문제가되지입니다, 잘 데이터베이스에 뭔가를 찾기 위해 () .find 사용할 수 있습니다. 어떤 문제가하는 것은 무엇인가가없는 경우, 내가 다른 일을하고 싶습니다이다. 현재이 내가 노력하고있어입니다 :

UserModel.find({ nick: act.params }, function (err, users) {
  if (err) { console.log(err) };
  users.forEach(function (user) {
    if (user.nick === null) {
      console.log('null');
    } else if (user.nick === undefined) {
      console.log('undefined');
    } else if (user.nick === '') {
      console.log('empty');
    } else {
      console.log(user.nick);
    }
  });
});

그 화재 중에 나는 act.params가 닉 색인에하지 않을 일을하지 않을 때. 이러한 상황이 발생했을 때 모두에서 콘솔에 아무것도하지 않는,하지만 난 잘 실제로있을 때 로그인하세요 user.nick을한다. 난 그냥이 같은 역으로 그것을 할 시도 :

UserModel.find({ nick: act.params }, function (err, users) {
  if (err) { console.log('noooope') };
  users.forEach(function (user) {
    if (user.nick !== '') {
      console.log('null');
    } else {
      console.log('nope');
    }
  });
});

그러나 이것은 여전히 ​​아니 기록하지 않았다. 내가 무슨 말이냐?

그것을 찾을 수없는 경우, 그냥 내가 내가 그것을인지하고 싶지하지 않는 것이없는 경우 나중에 일을 할 필요를 제외하고 괜찮 찾기 호출, 모든 것을 건너 뜁니다. : /

해결법

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

    1.이 경우에는 일치 찾을 수 없습니다 ()가 반환 [], findOne () 반환 널 (null) 동안. 중 하나를 사용 그래서 :

    이 경우에는 일치 찾을 수 없습니다 ()가 반환 [], findOne () 반환 널 (null) 동안. 중 하나를 사용 그래서 :

    Model.find( {...}, function (err, results) {
        if (err) { ... }
        if (!results.length) {
            // do stuff here
        }
    }
    

    또는:

    Model.findOne( {...}, function (err, result) {
        if (err) { ... }
        if (!result) {
            // do stuff here
        }
    }
    
  2. ==============================

    2.

    UserModel.find({ nick: act.params }, function (err, users) {
      if (err) { console.log(err) };
      if (!users.length) { //do stuff here };
      else {
        users.forEach(function (user) {
          console.log(user.nick);
        });
      }
    });
    

    나는 일에 발견하는 것이다.

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

    3.내가 사용했다 :

    내가 사용했다 :

     if(!users.length) { //etc }
    

    작업에 얻을 수 있습니다.

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

    4.당신이 res.send (데이터) 또는을 console.log (데이터) 코드이 코드를 시도 복귀 [] 또는 빈 로그 / 빈 res.send을 수행 사용 후 :

    당신이 res.send (데이터) 또는을 console.log (데이터) 코드이 코드를 시도 복귀 [] 또는 빈 로그 / 빈 res.send을 수행 사용 후 :

    if (data === null) {
            console.log('record does not exist')
            // or do something
        }
    

    내 프로젝트의 예

    router.post('/updated-data', (req, res, next) => {
    
    const userName = req.body.userName;
    const newUserName = req.body.newUserName;
    
    
    User.findOneAndUpdate({userName: userName}, {userName: newUserName}, {new: true}, (err, data) => {
    
        if (err) {
            console.log(err)
        } else if (data === null || !data) {
            res.send('kullanıcı bulunamadı')
        } else {
            console.log(newUserName)
            res.send(data)
        }
    })
    

    참고 : 다른 예는보다 효율적으로 사용 될 수있다.

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

    5.이 옵션을 사용합니다.

    이 옵션을 사용합니다.

    if(!users) { 
        res.send({message: "User not found"});
    }else {
        res.send({message: "User found"});
    }
    
  6. from https://stackoverflow.com/questions/9660587/do-something-if-nothing-found-with-find-mongoose by cc-by-sa and MIT license