由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - node.js错误求指点
相关主题
node 求算法貌似mongo db 开始走下坡路了
node promise发出reject之后,是不是只能hit catch block ?Cassandra 为啥干不过芒果?
尼玛 callback 真是反人类快速出app的MVP, 有什么推荐的框架和postgresql结合的比较好的么?
同步编程真郁闷需要做一个IM的App,后台用什么比较好?
关于clojure谁能说说同步/异步IO和阻塞/非阻塞IO的区别?
full stack python to clone google plus like website看了一下C#的async await
从争论中的一点思考这年头async IO成了流行了
问一下如果要存像linkedin那样的user profiles 用什么数据库比较好?scala有一个postgresql&mysql的异步驱动
相关话题的讨论汇总
话题: done话题: xx话题: function话题: err
进入Programming版参与讨论
1 (共1页)
f*****w
发帖数: 2602
1
代码如下
var DatabaseCleaner = require('database-cleaner');
beforeEach(function(done){
var databaseCleaner = new DatabaseCleaner('postgresql');
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
databaseCleaner.clean(client, function() {
console.log('Done cleaning up');
client.query("INSERT XX XX XX", function(err, result) {
console.log('Done new record.' + err);
});
});
done();
});
});
怎么搞还是有这样的错误
Error: timeout of 2000ms exceeded. Ensure the done() callback is being
called in this test.
我自己猜测应该是一个数据库指令没有搞完这个代码又在做新的操作。 可是我已经把
数据库操作写成nested的了,为什么还是不行?
新手,实在想不明白,求大牛能指导下
z****e
发帖数: 54598
2
你都用node了为什么还选择postgresql?
选择mongo都比这个好,就你的situation而言
你现在这个问题是已经属于非主流问题了,因为比较少人这么搞
你既然选择了db,就应该找能够搞定同步操作的东西
比如php,或者tomcat都行
你这样邯郸学步,最后搞得不伦不类
你看你的金字塔已经开始建了
换成mongo算了,你要的平台肯定支持mongo
如果你想坚持同步异步同时存在,vert.x咯
f*****w
发帖数: 2602
3
是说只要是用异步库 都更适合用mongo是吗?
我就是要写的东西貌似会有很多join 听说mongo对此的支持不是特别好,所以。。。
我上面的code是unit test里面的代码,所以才会出现先清空所有数据这样比较极端的
操作 :-)

【在 z****e 的大作中提到】
: 你都用node了为什么还选择postgresql?
: 选择mongo都比这个好,就你的situation而言
: 你现在这个问题是已经属于非主流问题了,因为比较少人这么搞
: 你既然选择了db,就应该找能够搞定同步操作的东西
: 比如php,或者tomcat都行
: 你这样邯郸学步,最后搞得不伦不类
: 你看你的金字塔已经开始建了
: 换成mongo算了,你要的平台肯定支持mongo
: 如果你想坚持同步异步同时存在,vert.x咯

z****e
发帖数: 54598
4
postgresql -> 同步
mongo -> 异步
node -> 异步
php, tomcat -> 同步
vert.x -> 异步+同步(worker)
node也有worker,但是很麻烦,比较折腾
同步搭配同步的,异步搭配异步的
如果你换着搭配,就会有冲突
mongo是不太容易做join,但是比你搞异步的postgresql可能要简单点
如果你坚持node的话,用vert.x这些都不是问题,意料之中

【在 f*****w 的大作中提到】
: 是说只要是用异步库 都更适合用mongo是吗?
: 我就是要写的东西貌似会有很多join 听说mongo对此的支持不是特别好,所以。。。
: 我上面的code是unit test里面的代码,所以才会出现先清空所有数据这样比较极端的
: 操作 :-)

z****e
发帖数: 54598
5
或者你想想如何整个postgresql的worker,这种流行db
应该npm上有很多人做过了,但是还是用postgresql在这里不是一个好idea
z****e
发帖数: 54598
6
vert.x就很好,v3官方支持mysql,postgresql库
l**********n
发帖数: 8443
7
you should use Promise, to ensure done is always called no matter what

【在 f*****w 的大作中提到】
: 代码如下
: var DatabaseCleaner = require('database-cleaner');
: beforeEach(function(done){
: var databaseCleaner = new DatabaseCleaner('postgresql');
: pg.connect(process.env.DATABASE_URL, function(err, client, done) {
: databaseCleaner.clean(client, function() {
: console.log('Done cleaning up');
: client.query("INSERT XX XX XX", function(err, result) {
: console.log('Done new record.' + err);
: });

p*****2
发帖数: 21240
8
done执行了吗
打印点log看看

【在 f*****w 的大作中提到】
: 代码如下
: var DatabaseCleaner = require('database-cleaner');
: beforeEach(function(done){
: var databaseCleaner = new DatabaseCleaner('postgresql');
: pg.connect(process.env.DATABASE_URL, function(err, client, done) {
: databaseCleaner.clean(client, function() {
: console.log('Done cleaning up');
: client.query("INSERT XX XX XX", function(err, result) {
: console.log('Done new record.' + err);
: });

p*****2
发帖数: 21240
9

在电脑上看清楚一下,你把done放到callback里面,也就是你完成所有任务之后在done

【在 f*****w 的大作中提到】
: 代码如下
: var DatabaseCleaner = require('database-cleaner');
: beforeEach(function(done){
: var databaseCleaner = new DatabaseCleaner('postgresql');
: pg.connect(process.env.DATABASE_URL, function(err, client, done) {
: databaseCleaner.clean(client, function() {
: console.log('Done cleaning up');
: client.query("INSERT XX XX XX", function(err, result) {
: console.log('Done new record.' + err);
: });

b***e
发帖数: 1419
10
/* This is what I guess you want. */
var DatabaseCleaner = require('database-cleaner');
beforeEach(function (done) {
var databaseCleaner = new DatabaseCleaner('postgresql');
pg.connect(process.env.DATABASE_URL, function (err, client, release) {
databaseCleaner.clean(client, function () {
console.log('Done cleaning up');
client.query("INSERT XX XX XX", function (err, result) {
release();
console.log('Done new record.' + err);
done();
});
});
});
});

【在 f*****w 的大作中提到】
: 代码如下
: var DatabaseCleaner = require('database-cleaner');
: beforeEach(function(done){
: var databaseCleaner = new DatabaseCleaner('postgresql');
: pg.connect(process.env.DATABASE_URL, function(err, client, done) {
: databaseCleaner.clean(client, function() {
: console.log('Done cleaning up');
: client.query("INSERT XX XX XX", function(err, result) {
: console.log('Done new record.' + err);
: });

相关主题
full stack python to clone google plus like website貌似mongo db 开始走下坡路了
从争论中的一点思考Cassandra 为啥干不过芒果?
问一下如果要存像linkedin那样的user profiles 用什么数据库比较好?快速出app的MVP, 有什么推荐的框架和postgresql结合的比较好的么?
进入Programming版参与讨论
f*****w
发帖数: 2602
11
完全正确了!
我还以为这个done() 是可有可无 无所谓,只有我在乎function之后具体做什么才需
要的东西
而且我尝试换了release() 和 done()的位置,分别放到各自对应的操作结束之后
。貌似也可以过,是不是确实没有区别?还是我碰巧对了
有点不太明白done() 这个里面到底发生了什么,为什么会影响执行顺序。可以推荐下
我该去读下哪个nodejs的subject吗?
pg.connect(process.env.DATABASE_URL, function(err, client, release) {
databaseCleaner.clean(client, function() {
console.log('Done cleaning up');
var query = sql.insert()
.into('hot_user')
.set("id", 1)
.set("name", "testing")
client.query(query.toString(), function(err, result) {
// release();
console.log('Done new record.');
// done();
});
release();
});
});
done();

【在 b***e 的大作中提到】
: /* This is what I guess you want. */
: var DatabaseCleaner = require('database-cleaner');
: beforeEach(function (done) {
: var databaseCleaner = new DatabaseCleaner('postgresql');
: pg.connect(process.env.DATABASE_URL, function (err, client, release) {
: databaseCleaner.clean(client, function () {
: console.log('Done cleaning up');
: client.query("INSERT XX XX XX", function (err, result) {
: release();
: console.log('Done new record.' + err);

p*****2
发帖数: 21240
12
node是异步的 done很重要呀 你不done test不知道什么时候结束 就time out了

【在 f*****w 的大作中提到】
: 完全正确了!
: 我还以为这个done() 是可有可无 无所谓,只有我在乎function之后具体做什么才需
: 要的东西
: 而且我尝试换了release() 和 done()的位置,分别放到各自对应的操作结束之后
: 。貌似也可以过,是不是确实没有区别?还是我碰巧对了
: 有点不太明白done() 这个里面到底发生了什么,为什么会影响执行顺序。可以推荐下
: 我该去读下哪个nodejs的subject吗?
: pg.connect(process.env.DATABASE_URL, function(err, client, release) {
: databaseCleaner.clean(client, function() {
: console.log('Done cleaning up');

l**********n
发帖数: 8443
13
you don't have exception handling

【在 f*****w 的大作中提到】
: 完全正确了!
: 我还以为这个done() 是可有可无 无所谓,只有我在乎function之后具体做什么才需
: 要的东西
: 而且我尝试换了release() 和 done()的位置,分别放到各自对应的操作结束之后
: 。貌似也可以过,是不是确实没有区别?还是我碰巧对了
: 有点不太明白done() 这个里面到底发生了什么,为什么会影响执行顺序。可以推荐下
: 我该去读下哪个nodejs的subject吗?
: pg.connect(process.env.DATABASE_URL, function(err, client, release) {
: databaseCleaner.clean(client, function() {
: console.log('Done cleaning up');

b***e
发帖数: 1419
14
You don't have to fight the understanding of callbacks too hard at this
point, since it might be not plainly straightforward to everyone. Node 0.12
is out and the trend is to use generators to make async sequence a
synchronous sugar. In other words, you can write node.js the "normal" way,
similar to Ruby or PHP. That'll make things much easier.

【在 f*****w 的大作中提到】
: 完全正确了!
: 我还以为这个done() 是可有可无 无所谓,只有我在乎function之后具体做什么才需
: 要的东西
: 而且我尝试换了release() 和 done()的位置,分别放到各自对应的操作结束之后
: 。貌似也可以过,是不是确实没有区别?还是我碰巧对了
: 有点不太明白done() 这个里面到底发生了什么,为什么会影响执行顺序。可以推荐下
: 我该去读下哪个nodejs的subject吗?
: pg.connect(process.env.DATABASE_URL, function(err, client, release) {
: databaseCleaner.clean(client, function() {
: console.log('Done cleaning up');

l**********n
发帖数: 8443
15
大牛举个generator异步的例子

12
,

【在 b***e 的大作中提到】
: You don't have to fight the understanding of callbacks too hard at this
: point, since it might be not plainly straightforward to everyone. Node 0.12
: is out and the trend is to use generators to make async sequence a
: synchronous sugar. In other words, you can write node.js the "normal" way,
: similar to Ruby or PHP. That'll make things much easier.

c*********e
发帖数: 16335
16
lz,你的原帖子里,连接了数据库后没有release().

【在 f*****w 的大作中提到】
: 完全正确了!
: 我还以为这个done() 是可有可无 无所谓,只有我在乎function之后具体做什么才需
: 要的东西
: 而且我尝试换了release() 和 done()的位置,分别放到各自对应的操作结束之后
: 。貌似也可以过,是不是确实没有区别?还是我碰巧对了
: 有点不太明白done() 这个里面到底发生了什么,为什么会影响执行顺序。可以推荐下
: 我该去读下哪个nodejs的subject吗?
: pg.connect(process.env.DATABASE_URL, function(err, client, release) {
: databaseCleaner.clean(client, function() {
: console.log('Done cleaning up');

1 (共1页)
进入Programming版参与讨论
相关主题
scala有一个postgresql&mysql的异步驱动关于clojure
rxjava 1.0版本发布了full stack python to clone google plus like website
多线程,异步,并发冲突,fp和其它从争论中的一点思考
真正对异步有需求的应该是游戏类服务器问一下如果要存像linkedin那样的user profiles 用什么数据库比较好?
node 求算法貌似mongo db 开始走下坡路了
node promise发出reject之后,是不是只能hit catch block ?Cassandra 为啥干不过芒果?
尼玛 callback 真是反人类快速出app的MVP, 有什么推荐的框架和postgresql结合的比较好的么?
同步编程真郁闷需要做一个IM的App,后台用什么比较好?
相关话题的讨论汇总
话题: done话题: xx话题: function话题: err