您好,我是Promises的新手,他被困在如何等待for循环中的所有promise解析之后再转到下一个then()。我已经看到了两个promise.all示例,但是我不清楚如何使它们适应下面的代码。当前,它转到for循环之后的下一个then(),并在for循环完成之前进行解析。任何帮助表示赞赏!
我正在使用pg-promise(带有承诺的psql)。
原始代码:
function getTeamMembers(aTeam) {
let promise = new Promise(function(resolve, reject) {
db.getTeamMembers(aTeam.tid) //return sql results rows
.then(function(rows){
for(let i=0; i<rows.length; ++i) { //loop through each result row
getUserByUsername(rows[i].username)
.then(function(cfUser) { //add user from row to aTeam object
aTeam.addMember(cfUser);
})
.catch(function(e) {
reject(e);
});
}
})
.then(function(){
console.log(aTeam); //confirm added properly
resolve(aTeam); //resolve object
})
.catch(function(e) {
console.log('addMemberToTeamByUsername: '+e.stack);
reject(e);
});
});
return promise;
}
Run Code Online (Sandbox Code Playgroud) 对于下面的小提琴,我想隐藏根节点。感谢任何帮助,要查看代码,请查看小提琴。
我想我会做类似以下的事情,但我不确定如何/在哪里实现它:
if (d.depth > 0) {
...node is drawn
}
Run Code Online (Sandbox Code Playgroud)
我的 myRoute.js 定义了一个路由 (GET),我想从另一个路由 (api.js) 调用 api 端点,但我不确定这样做的正确方法是什么。api.js 路由工作正常(图片和代码如下)。
router.get('/getGroups/:uid', function(req, res, next) {
let uid = req.params.uid;
db.getAllGroups(uid).then((data) => {
let response =[];
for (i in data) {
response.push(data[i].groupname);
}
res.status(200).send(response);
})
.catch(function (err) {
return err;
});
});
Run Code Online (Sandbox Code Playgroud)
按预期工作:
myRoute.js
我希望当用户访问 localhost:3000/USER_ID 时,路由定义从 api 获取信息。下面的伪代码(someFunction)。
router.get('/:uid', function(req, res, next) {
let uid = req.params.uid;
let fromApi = someFunction(`localhost:3000/getAllGroups/${uid}`); // <--!!!
console.log(fromApi) ; //expecting array
res.render('./personal/index.jade', {fromApi JSON stringified});
});
Run Code Online (Sandbox Code Playgroud) 我创建了一个名为alpha的表和一个名为'event'的alpha表.我可以在事件表中添加一行,并从节点中的事件表中检索所有行.但是当我在命令行中尝试时,当我选择全部时,我得到一个"空白".
命令行(没有看到任何行):
(master U:1 ?) happy psql alpha
psql (9.4.4)
Type "help" for help.
alpha=# psql \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+------------
public | event | table | pgOwner
(1 row)
alpha-# select * from event
alpha-#
Run Code Online (Sandbox Code Playgroud)
节点代码(显示行):
let promise = require('bluebird');
let moment = require('moment');
let options = {
// Initialization Options
promiseLib: promise
};
let pgp = require('pg-promise')(options);
let connectionString = 'postgres://localhost:5432/alpha';
let db = pgp(connectionString);
// add query functions
function getAllEvents(req, …Run Code Online (Sandbox Code Playgroud) 您好,我是 Postgresql 的新手,我想了解在抛出错误时如何处理 0 结果。本质上,我想获取一个不存在的用户,如果不存在则返回 null,并有一个错误处理程序。以下是我正在使用的当前代码。任何关于更好的方法的提示都表示赞赏!
var options = {
// Initialization Options
promiseLib: promise
};
var pgp = require('pg-promise')(options);
var connectionString = 'postgres://localhost:5432/myDbName';
var db = pgp(connectionString);
function getUser(id) {
let user = new Promise(function(resolve, reject) {
try {
db.one('select * from users where loginName = $1', id).then(function(data) {
console.log(data);
resolve(data);
}).catch (function (e) {
console.log('error: '+e);
reject(e);
});
}
catch (e) {
console.log('error: '+e);
reject(e);
}
});
return user;
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
error: QueryResultError {
code: queryResultErrorCode.noData
message: "No …Run Code Online (Sandbox Code Playgroud) http://我的正则表达式工作得很好,除了我想添加 url 必须包含or的要求https://,并且我尝试修复正则表达式会破坏它。任何帮助表示赞赏!
let rx = new RegExp(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)/g);
let replaced = text.replace(
rx,
`<a href="$1" target="_blank">$1</a>`
);
Run Code Online (Sandbox Code Playgroud) 我创建了文件夹:
app_name/res/drawable-hdpi
app_name/res/drawable-mdpi
app_name/res/drawable-ldpi
Run Code Online (Sandbox Code Playgroud)
我把图标72x72放在hdpi中,48x48放在mdpi中,36x36放在ldpi中.我将png图标命名为:icon.png
我编译并运行它,图标没有改变.那么我去了AndroidManifest.xml并更改了icon参数:
<application
android:icon="@drawable-ldpi/icon"
...
Run Code Online (Sandbox Code Playgroud)
但是我收到此错误:
错误:找不到与给定名称匹配的资源(在'icon'处,值为'@ drawable-ldpi/icon').AndroidManifest.xml中
有小费吗?
我从D3.js In Action一书中复制了一个简单条形图的例子,当我尝试运行它时出错.
控制台错误:
charts.js:3 Uncaught TypeError: Cannot read property 'linear' of undefined
Run Code Online (Sandbox Code Playgroud)
代码:
var yScale = d3.scale.linear().domain([0, 390]).range([0,100]);
d3.select('svg')
.selectAll('rect')
.data([150,390,340,295])
.enter()
.append('rect')
.attr('width', 50)
.attr('height', function(d) { return yScale(d); })
.attr('x', function(d, i) { return i*60; })
.attr('y', function(d) { return 100 - yScale(d); })
.style('fill', 'rgb(104, 167, 207)');
Run Code Online (Sandbox Code Playgroud)
如果我将yScale声明移到底部,我会收到以下错误:
charts.js:11 Uncaught TypeError: yScale is not a function
Run Code Online (Sandbox Code Playgroud) 我正在使用 pg-promise,但不明白如何运行此查询。第一个查询有效,但我想使用 pg-promise 的安全字符转义,然后我尝试第二个查询,但它不起作用。
作品:
db.any(`SELECT title FROM books WHERE id = ANY ('{${ids}}') ORDER BY id`)
Run Code Online (Sandbox Code Playgroud)
不起作用
db.any(`SELECT title FROM books WHERE id = ANY ($1) ORDER BY id`, ids)
Run Code Online (Sandbox Code Playgroud) node.js ×4
pg-promise ×3
d3.js ×2
postgresql ×2
android ×1
d3v4 ×1
ecmascript-6 ×1
express ×1
javascript ×1
psql ×1
regex ×1