在为数据库开发时,方法spread
是必不可少的,将数组值转换为命名参数。
但是当解析数据无法直接映射时如何做同样的事情?
这是一个嵌套事务的简单示例:
db.tx(function () {
return promise.all([
this.none("update users set active=$1 where id=$2", [true, 123]),
this.none("insert into audit(status, id) values($1, $2)", ['active', 123]),
this.tx(function () {
return promise.all([
this.one("insert into users(name) values($1) returning id", "John"),
this.one("insert into events(code) values($1) returning id", 123)
]);
})
]);
})
.then(function (data) {
console.log(data[2][0].id); // print new user id;
console.log(data[2][1].id); // print new event id;
});
我真的希望能够用then
替换上一个spread
部分,但问题是我们无法直接使用数据,我们需要在我们的data[2]
中使用.spread(data[2], function (user, event) {
console.log(user.id); // print new user id;
console.log(event.id); // print new event id;
});
示例
获得以下效果的推荐方法是什么:
$_POST
答案 0 :(得分:1)
您可以使用
.get(2).spread(function(user, event) { ... })