在继续操作之前,先检查一个Promise函数的返回值。方法错误?

黛西·莱米(Deisy Laymi)

背景:我有一个PHP背景,这是我的第一个使用MEAN堆栈的应用程序。

我需要保存一条记录,但是在我必须检查数据库中是否已保存相同ID的任何记录之前。在PHP中,我将执行以下操作:用户单击“保存”后:1)调用该函数以检查具有该ID的条目是否已经存在2)如果不存在,请调用save函数。

在Javascript中,我对Promises等感到有些困惑。

有人可以给我点灯吗?

现在,我正在执行以下操作:在save api中,我调用此函数来检查记录是否已存在于数据库中: recordExists = findTranscationByBill(billId);

function findTransactionByBill(billId){
     results = new promise(function(resolve, reject){
        Transactions.find({billId : billId},function(err, transactions){
            if(err)
                reject("Error: "+err);

            //console.log(transactions);
            resolve(transactions);
         });  
     });

     results.then(function(data){
        console.log('Promise fullfilled: '+ data);
     }, function(error){
        console.log('Promise rejected: ' + error);
     }); 

  return $results;
}

问题是我认为我没有正确使用promise,因为我的变量没有被填充(因为它的Async)。在console.log中,我看到了诺言已被兑现,但是,由于[object Object]我坚持这个问题,变量返回了,因为我不知道我是否应该继续以PHP思维方式进行思考,或者是否有其他方法用于Javascript。

提前致谢!

阿德内

我认为您也可以为此使用回调,并且由于MongoDB具有count方法,为什么不使用它

function findTransactionByBill(billId, callback){

    Transactions.count({billId : billId}, function(err, count){
        if (err) {
            callback(err, false);
        } else {
            callback(null, count !== 0);
        }
    });

}

并使用它

findTransactionByBill(billId, function(err, exists) {
   if (err) {
      // handle errors
   } else if ( ! exists ) {
      // insert into DB
   }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档