繁体   English   中英

为什么在Mongoose findOne方法中返回不起作用?

[英]Why return not works in Mongoose findOne method?

我尝试按名称查找一项,然后更新表并返回更新的结果,但返回无效。 我的代码:

class addSongsToArtist {

    constructor(artistName) {

        Artist.findOne({
            name: artistName
        }).exec((err, data) => {
            if (err) console.log(err);

            data.name = 'updated name'
            data.save();

            return data // * not work 
        });
    }
}

到exec方法中,我看到具有正确结果的数据,并保存到mongo控制台中。 但是返回不起作用。 我尝试将更改保存到外部变量中并在Promise中返回结果,但是它也无法正常工作。 为什么不起作用?

我有解决办法。 返回新对象实例的构造方法出现问题。 工作的代码:

class addSongsToArtist {
    constructor(artistName) {
      this.result = false
        Artist.findOne({
            name: artistName
        }).exec((err, data) => {
            if (err) console.log(err);

            data.name = 'updated name'
            data.save();
            this.result = data
        });
    }

  /**
  * need call in promise after call new addSongsToArtist()
  */
  getData() {
    return this.result
  }
}

并获取数据:

let findOne;
Promise.resolve()
  .then(()=>{
     findOne = new addSongsToArtist()
   })
  .then(()=>{
     findOne.getData()
   });

您将.save async功能用作同步功能,请尝试以下操作:

constructor(artistName) {

    Artist.findOne({
        name: artistName
    }).exec((err, data) => {
        if (err || !data){
           console.log(err);
           return null;
        }
        else
        {
          data.name = 'updated name'
          data.save(function(err, savedDatas)
          {
             if(err || !savedDatas)
             {
                return null;
             }
             else
             {
                return savedDatas; // * not work 
             }
          });
        }
       });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM