我正在尝试将一个全新的对象保存到我的数据库中,但前提是它还不存在。为此,我在 other 中创建了这个方法来进行两个验证:(1) 如果对象丢失和 (2) 如果对象已经存在。如果一切正常,则保存。代码如下:
exports.new = (obj) => {
return Promise.resolve(() => {
if (!obj) throw Error('object is missing');
this.getOneAsync(obj).then(repeatedObj => {
if (repeatedObj.length != 0) throw Error('Object already saved!');
return obj;
});
}).then(obj => {
var newObj = createModel(obj);
return newObj.saveAsync();
})
};
不幸的是,Promise.resolve()
没有被执行。我的代码直接跳转到then()
子句,obj
不是我所期望的,总是返回{ length: 0, name: '' }
.
我究竟做错了什么?任何帮助将不胜感激。
Promise.resolve()
被执行,但不是你传递给它的函数。Promise.resolve
立即使用您传递给它的值解决承诺。它不调用该函数。.then
使用您传递给的函数调用Promise.resolve
。
Promise.resolve
在你的情况下没有用。而是做类似的事情
exports.new = (obj) => {
if (!obj) return Promise.reject(new Error('object is missing'));
return this.getOneAsync(obj)
.then(repeatedObj => {
if (repeatedObj.length != 0) throw Error('Object already saved!');
var newObj = createModel(obj);
return newObj.saveAsync();
});
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句