猫鼬验证问题

时间:2019-12-01 16:18:07

标签: node.js mongoose

我目前具有以下架构:

Schema({
    _id: { type: Number, default: Math.floor(Date.now() / 1000) + 24 * 60 * 60 },
    userID: { type: Number, require },
    assignmentID: {
        type: Number,
        validate: {

            validator: function (v) {
                if (!v) {
                    Promise.reject(false);
                }
                else {
                    Assignment.findById(v, (assignmentErr, assignmentDoc) => {
                        if(assignmentErr || !assignmentDoc){
                            Promise.reject(false);
                        }
                        else{
                            Promise.resolve(true);
                        }
                    })
                }
            },
            message: 'Invalid assignment ID.'
        }
    }

我面临的问题是我不断在控制台中收到警告,提示我没有处理被拒绝的承诺。即使诺言被拒绝,该文档也保存在数据库中。

我保存新文档的方式如下:

schema.save((err, savedDoc) => {
}

如何解决此问题,或者有没有更好的方法来进行类似的复杂验证?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码:

all_item=assets::all();

foreach($all_item as $item)
{
   $month=Carbon::now()->format('m');
   $depreciation_updated_at = createFromFormat('Y-m-d', $item->depreciation_updated_at); //or can use created_at/updated_at as said below
   if ($depreciation_updated_at ->format('m') != $month) {
      $update_item = assets::findOrFail($item->id);
      $update_item->depriciation_cost = $item->depriciation - $item->depriciation_cost;
      $update_item->update();
   }
}

更新 您也可以尝试如下所示:

 assignmentID: {
    type: Number,
    validate: {

        validator: function (v) {
            if (!v) {
               return Promise.reject(false);
            }

            return Assignment.findById(v)
                .then(assignmentDoc => {
                    if( !assignmentDoc){
                      return  Promise.reject(false);
                    }
                    else{
                       return Promise.resolve(true);
                    }
                })
                .catch(error => {
                   return Promise.reject(error );
                })
        },
        message: 'Invalid assignment ID.'
    }
}