小编Nar*_*esh的帖子

使用Bluebird包装Promise中的Node.js回调

如何使用Bluebird中的Promise包装Node.js回调?这就是我想出来的,但想知道是否有更好的方法:

return new Promise(function(onFulfilled, onRejected) {
    nodeCall(function(err, res) {
            if (err) {
                onRejected(err);
            }
            onFulfilled(res);
        });
});
Run Code Online (Sandbox Code Playgroud)

如果只需要返回错误,是否有更简洁的方法来执行此操作?

编辑 我试图使用Promise.promisifyAll(),但结果没有传播到then子句.我的具体示例如下所示.我正在使用两个库:a)sequelize,它返回promises,b)supertest(用于测试http请求),它使用节点样式回调.这是不使用promisifyAll的代码.它调用sequelize初始化数据库,然后发出HTTP请求来创建订单.正确打印Bosth console.log语句:

var request = require('supertest');

describe('Test', function() {
    before(function(done) {
        // Sync the database
        sequelize.sync(
        ).then(function() {
            console.log('Create an order');
            request(app)
                .post('/orders')
                .send({
                    customer: 'John Smith'
                })
                .end(function(err, res) {
                    console.log('order:', res.body);
                    done();
                });
        });
    });

    ...
});
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用promisifyAll,以便我可以使用then链接调用:

var request = require('supertest');
Promise.promisifyAll(request.prototype);

describe('Test', function() {
    before(function(done) {
        // Sync the database
        sequelize.sync(
        ).then(function() {
            console.log('Create an order');
            request(app) …
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise bluebird

8
推荐指数
1
解决办法
4593
查看次数

如何从 PostgreSQL 命令行运行参数化查询

我想从 psql 命令行运行以下参数化查询:

SELECT *
FROM users
WHERE username = :username;
Run Code Online (Sandbox Code Playgroud)

如何在命令行上设置用户名参数?

我试过这个:

\set username 'john'
Run Code Online (Sandbox Code Playgroud)

但是当我运行查询时,我收到以下错误消息:

ERROR:  column "john" does not exist
LINE 3: WHERE username = john;
                         ^
Run Code Online (Sandbox Code Playgroud)

postgresql psql

8
推荐指数
1
解决办法
4209
查看次数

WPF DataGrid控件模板

我正在尝试自定义WPF 4.0 DataGrid并需要其控件模板的列表(也是嵌套DataGridColumnHeadersPresenter的控件模板 - PART_ColumnHeadersPresenter).我发现链接提供了许多控件模板,但列表中缺少DataGrid!是否有发布最新WPF 4.0 DataGrid的控件模板的地方.我尝试使用以下代码获取它,但它没有给我嵌套模板:

// Create an XmlWriter
StringBuilder sb = new StringBuilder();
XmlWriterSettings xmlSettings = new XmlWriterSettings
    { Indent = true, IndentChars = "    ", NewLineOnAttributes = true };
XmlWriter writer = XmlWriter.Create(sb, xmlSettings);

// Write the control template
ControlTemplate template = controlToExtract.Template;
XamlWriter.Save(template, writer);

// Write results to display
controlTemplate.AppendText(sb.ToString());
Run Code Online (Sandbox Code Playgroud)

wpf datagrid controltemplate

7
推荐指数
1
解决办法
6078
查看次数

将远程JMS客户端连接到GlassFish 3

我试图从独立的远程客户端连接到GlassFish 3的JMS服务.但是我得到了一个java.lang.ClassNotFoundException:com.sun.messaging.jms.ra.ResourceAdapter.有想法该怎么解决这个吗?

这是我到目前为止的设置:

  • 在本地模式下的Glassfish 3 JMS服务(我假设EMBEDED模式在这种情况下不起作用,因为它绕过了网络堆栈)

  • JNDI属性指定如下:

    java.naming.factory.initial = com.sun.enterprise.naming.SerialInitContextFactory java.naming.factory.url.pkgs = com.sun.enterprise.naming java.naming.factory.state = com.sun.corba.ee. impl.presentation.rmi.JNDIStateFactoryImpl

  • gf-client-module.jar(在GLASSFISH_HOME/modules中)添加到独立应用程序的类路径中.还尝试添加模块目录中存在的其他jar(例如jms-core.jar),但仍然获得相同的ClassNotFoundException.

任何帮助将非常感激.

jms glassfish remote-access

7
推荐指数
1
解决办法
1万
查看次数

下划线 - 从排序的对象数组中查找

Underscore提供了sortBy对对象数组进行排序的功能.但是,一旦我有这个排序数组,有没有办法使用二进制搜索找到一个元素?该函数find不利用数组已排序的事实,而函数indexOf确实如此,但它没有提供指定排序键的方法.

  1. 我错过了什么吗?
  2. 有没有其他JS库可以轻松实现这一点?

javascript underscore.js

7
推荐指数
1
解决办法
1342
查看次数

npm3如何决定安装flat与嵌套?

我的项目依赖于angular2 beta.6和另一个依赖于angular2 beta.0的项目.

package.json用于我的项目

"dependencies": {
    "angular2": "2.0.0-beta.6",
    "another-project": "0.0.1"
}
Run Code Online (Sandbox Code Playgroud)

package.json用于另一个项目

"dependencies": {
    "angular2": "2.0.0-beta.0",
}
Run Code Online (Sandbox Code Playgroud)

npm install我的项目,它安装angular2两次:

  1. node_modules/angular2 (beta.6)
  2. node_modules/another-project/angular2 (beta.0)

试图了解npm3如何决定嵌套angular2 beta.0.是因为它们都被称为angular2,因此它们不能同时坐在顶层吗?

npm npm-install

7
推荐指数
1
解决办法
3955
查看次数

npm 发布仅包含 dist 文件夹子项的包

我的包结构如下:

mypackage
   |--- src
   |     |--- component1
   |     `--- component2
   `--- dist
         |--- component1
         `--- component2
Run Code Online (Sandbox Code Playgroud)

当我将它发布到 npm 时,我希望它看起来像下面这样,没有dist目录:

mypackage
   |--- component1
   `--- component2
Run Code Online (Sandbox Code Playgroud)

这个想法是,当我从这个包中导入时,导入应该是这样的:

import component1 from 'mypackage/component1'
Run Code Online (Sandbox Code Playgroud)

不是这个(注意额外的dist):

import component1 from 'mypackage/dist/component1'
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?我目前在我的 package.json 中有一个文件部分,它发布了额外的内容dist,我不希望这样:

"files": [
  "dist/"
]
Run Code Online (Sandbox Code Playgroud)

node.js npm package.json npm-publish

7
推荐指数
1
解决办法
4680
查看次数

类型错误:JSX元素类型'{} | 空| undefined'不是JSX元素的构造函数

我有一个称为React的组件HandleQuery,可以处理Apollo GraphQL查询的结果:

import React, { ReactNode } from 'react';

import { CenteredMessage } from './centered-message';

export interface HandleQueryProps {
    loading: boolean,
    error?: Error,
    children: ReactNode
}

export const HandleQuery = ({ loading, error, children }: HandleQueryProps) => {
    if (loading) {
        return <CenteredMessage>Loading...</CenteredMessage>;
    }

    if (error) {
        return <CenteredMessage>{error.message}</CenteredMessage>;
    }

    return children;
};
Run Code Online (Sandbox Code Playgroud)

当此组件在另一个组件中使用时,不会编译:

import React from 'react';

import { useQuery } from 'react-apollo-hooks';
import gql from 'graphql-tag';
import { HandleQuery } from '..';
import { MutationType } …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs react-apollo

7
推荐指数
1
解决办法
2780
查看次数

在 getDerivedStateFromError() 中我们可以期待什么错误类型?

根据TypeScript 定义,类型为any,而相关方法componentDidCatch()收到类型为 的错误Error。为什么会出现这种不一致?

typescript reactjs

7
推荐指数
2
解决办法
1194
查看次数

如何从react-router获取当前位置?

我试图从其状态驱动我的应用程序的导航.这是我的用例:

Given the user is on the Login page
When the application state changes to isLoggedIn
Then the application should navigate to the Dashboard page
Run Code Online (Sandbox Code Playgroud)

这是我当前的实现有效:

if (browserHistory.getCurrentLocation().pathname === '/login' && store.isLoggedIn) {
    browserHistory.push('/dashboard');
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,通过react-router文档和问题,我知道这browserHistory.getCurrentLocation()不是官方API,不应该使用它.有推荐的方法吗?

PS此代码在React组件外部运行,因此我无法使用 this.props.location.pathname

reactjs react-router

6
推荐指数
1
解决办法
2893
查看次数