猫鼬-如何等待保存

时间:2018-06-20 09:16:41

标签: mongodb mongoose mongodb-query mongoose-schema

得到结果后,我有一个findOne查询要保存一些数据。 我的findOne查询会搜索保存的相同数据。

我的问题是findOne在保存完成之前正确。

我要防止重复的dataRow。

return models.LogDashboard.findOne({'user.email': user.email, title: conditions[condition].title})
        .then((oldLog) => {
            if (oldLog) {
                return Promise.resolve('log already was created');
            } else {
                    let log = {
                        'user': {
                            'first' : user.name.first,
                            'last'  : user.name.last,
                            'phone' : user.phone.country + user.phone.number,
                            'email' : user.email,
                            'type'  : user.type,
                            'status': user.status
                        },
                        'done' : false,
                        'date' : new Date(),
                        'title': conditions[condition].title,
                        'todo' : conditions[condition].todo
                    };
                    newLog = new models.LogDashboard(log);

                    return newLog.save()
                        .then((log) => {
                            return Promise.resolve('Log was Created');
                        })
                        .catch((e) => {
                            return Promise.reject('Error' + e);
                        });
            }
        }).catch((e) => {
            return Promise.reject('Error' + e);
        });

1 个答案:

答案 0 :(得分:-1)

简短的解决方案,可能不是最好的解决方案,但是您尝试使用超时功能吗?

setTimeout(function(){

return newLog.save()
                    .then((log) => {
                        return Promise.resolve('Log was Created');
                    })
                    .catch((e) => {
                        return Promise.reject('Error' + e);
                    });

}, 500);

不知道函数的作用是什么,但这应该可以解决问题。