我的想法是我需要针对数据库运行多个操作,但仅限于我需要。例如,如果没有要插入的项目,则没有插入调用。
function dbOperations(params){
functionInsert(params)
.then(functionUpdate(params))
.then(functionDelete(params))
...
}
然后我
function functionInsert(params){
if (params){
//DO a call against DB which returns a promise
return knex.insert().transacting(trx);
}else{
//if no params, no need to do anything, just let the next .then() fire next function
return Promise.resolve()
}
}
通过这样做,代码运行正常,但是当没有params
时,我看到这个警告Warning: .then() only accepts functions but was passed: [object Object]
所以很明显我做错了。
当没有参数时,如何处理这种情况?
LE:对于数据库访问我正在使用knex
。我编辑了上面的functionInsert。
答案 0 :(得分:1)
警告本身正在解释。 .then
期望函数作为参数,但是你要传递函数functionUpdate
的结果。
您可能希望将语句包装在匿名函数中,正如@Thilo在评论中所指出的那样:
function dbOperations(params){
functionInsert(params)
.then(() => functionUpdate(params))
.then(() => functionDelete(params))
...
}