小编Joã*_*hin的帖子

不能app.use(multer)."需要中间件功能"错误

我刚开始学习NodeJS,我遇到了问题.我想将文件上传到我的服务器.为此,我搜索并发现了这个模块multer.在GitHub上作为示例工作:

var express = require('express');
var multer = require('multer');
var upload = multer({ dest: 'uploads/' });

var app = express()

app.post('/uploadImage', upload.single('image'), function(req, res) {
    console.log(req.file);
});
Run Code Online (Sandbox Code Playgroud)

将带有FormData /uploadImage的图像发布到图像时会保存在uploads/目录中.问题是图像以奇怪的名称保存,我想用原始名称保存它.为此,我明白我必须打电话app.use(multer({ dest: 'uploads/' }))' ,然后我将能够访问req.file我的功能,如:

app.post('/uploadImage', function(req, res) {
    console.log(req.file);
});
Run Code Online (Sandbox Code Playgroud)

但是我在尝试app.use()时遇到错误:

TypeError: app.use() requires middleware functions
    at EventEmitter.use (project\node_modules\express\lib\application
.js:209:11)
Run Code Online (Sandbox Code Playgroud)

我使用NodeJS 0.12.7和Express 4.13.1

我怎样才能实现上传?谢谢.

node.js multer

38
推荐指数
5
解决办法
4万
查看次数

Angular Directive上的可选参数

我在Angular上创建了一个指令,它接收5个参数,其中一个是可选数组.我试图处理它的方式如下:

app.directive('fooDirective', function() {
    return {
        restrict: 'AE',
        scope: {
            param1: '=',
            param2: '=' // optional array
        },
        template: //...
                "<div ng-class='defineClass()'> Message </div>"
                  //...
        controller: function($scope) {

             if (typeof $scope.param2 === 'undefined')
                  $scope.param2 = [];

             console.log($scope.param2);

             $scope.defineClass = function() {
                  if ($scope.param2.length == 0) return 'gray-text';
                  return 'red-text';
             };

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

在我的代码中某些时候,我检查了.lengthparam2,如果它是不确定的,它抛出了很多错误.让我疯狂的是,console.log()你可以看到那里的输出a [],表明.length我的param应该是0,并且在console.log()输出后显示控制台上的错误.

所以我想我错过了Angular绑定范围的方式或指令构造的流程.我曾尝试verifing我的两个PARAM linkcompile阶段,并得到了同样的问题.

那么,我在这里错过了什么?提前致谢.

angularjs angularjs-directive

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

GCM注册SERVICE_NOT_AVAILABLE

这真让我讨厌.我有一个使用GCM的应用程序.我有人抱怨他们因错误而无法登录.让我告诉你我是如何进行登录的:

// Login Activity
//....
public void onClickLoginButton (View v) {

    // Do some stuff...

    new GCMRegister().execute(); //AsyncTask
}

private class GCMRegister extends AsyncTask<Void, Void, Integer> {

    @Override
    protected Integer doInBackground (Void... params) {
        ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.isConnected()) {
            try {
                //Get GCM Registration key
                registrationId = googleCloud.register(Settings.PROJECT_NUMBER);
            } catch (Exception e) {
                Log.e("GCMRegister", e.toString());
                return -1;
            }
            return 1;
        } else {
            return -3;
        }
    }

    @Override
    protected void …
Run Code Online (Sandbox Code Playgroud)

android google-cloud-messaging

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

Spring @Autowired在一个类新实例上

我对Spring不太熟悉,我有以下情况:

存储库类:

@Repository
public class MyRepository {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

使用存储库类的类:

public class MyClass extends AbstractClass {

    @Autowired
    private MyRepository myRepository;

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

我知道,如果我注释我MyClass@Component,并用它与一个@Autowired,那么@Autowired MyRepository解决就好了.问题是我需要创建MyClass带反射的新实例.所以MyRepository永远不会解决,并且始终为null.

有没有办法@Autowired在这种情况下使用?

更好地解释我的情况:我有一些实现AbstractClass.在我的应用程序的设置阶段,我创建了HashMap这些实现.基本上:

{"MyClass", MyClass.class}
//...
Run Code Online (Sandbox Code Playgroud)

然后我有一个Controller映射到url 的泛型/{class}?options=... 使用{class} @PathVariable,HashMap上面和反射我能够根据给定创建一个类的实例options(这部分很重要).你们认为有更好的方法吗?

提前致谢

java spring dependency-injection autowired

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

Kibana 上的过滤方括号

我正在努力过滤 Kibana 日志消息中的方括号。假设我有以下消息:

[BOOK] The Book 32 was sold
Exception on buying BOOK
Run Code Online (Sandbox Code Playgroud)

我想只过滤具有完全正确的消息[BOOK](所以我应该只得到第一个)。

我尝试过使用我能想到的各种转义来过滤自由文本:

[BOOK]
"[BOOK]"
\[BOOK\]
"\[BOOK\]"
\\[BOOK\\]

Run Code Online (Sandbox Code Playgroud)

还尝试按消息字段进行过滤:

message: [BOOK]*
message: "[BOOK]*"
message: \[BOOK\]*
message: "\[BOOK\]*"
Run Code Online (Sandbox Code Playgroud)

但 Kibana 似乎只是忽略了方括号,并且总是带来这两条消息,仅突出显示该BOOK单词。

我怎样才能强制它搜索[]

elasticsearch kibana kibana-6

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

SharedPreferences不会节省价值

我有这个代码:

public class Register extends Activity {

    private LinearLayout layout;
    private TextView debug;
    public static final String USER_CONFIG = "UserConfigs";

    @Override
    public void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);

        SharedPreferences settings = getSharedPreferences(USER_CONFIG, MODE_PRIVATE);
        boolean registered = settings.getBoolean("registered", false);

        layout = (LinearLayout) findViewById(R.id.layoutRegister);

        if (!registered) {
            debug = new TextView(this);
            debug.setText("You have to register");
            layout.addView (debug);

            //TO DO user registration

            settings.edit().putBoolean("registered", true);
            settings.edit().commit(); 
        } else {
            debug = new TextView(this);
            debug.setText("You have already registered");
            layout.addView (debug);
            //TO DO skip to …
Run Code Online (Sandbox Code Playgroud)

android sharedpreferences

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

C# - 每个开发人员的不同 Settings.settings 文件

我在与我的团队同步 Settings.settings 时遇到问题。

在这个文件中,我存储了 DatabaseConfiguration:

<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="DatabaseLayer.Properties" GeneratedClassName="Settings">
  <Profiles />
  <Settings>
    <Setting Name="ConnectionString" Type="System.String" Scope="Application">
      <Value Profile="(Default)">mongodb://localhost</Value>
    </Setting>
    <Setting Name="DatabaseName" Type="System.String" Scope="Application">
      <Value Profile="(Default)">MyDatabaseName</Value>
    </Setting>
  </Settings>
</SettingsFile>
Run Code Online (Sandbox Code Playgroud)

此文件会自动与App.config文件保持同步。因此,当我更改其属性时,Visual Studio 会自动更新我的App.config文件。

问题是团队中的每个开发人员都有不同的数据库名称,所以人们时不时地提交他们的文件并“破坏”其他项目。

基本问题是: 每个开发人员如何拥有自己的忽略文件和自己的配置?

我尝试过但无法使其工作的事情:

  • 只需创建一个被忽略的User.settings文件并将配置放在上面。这有一个问题,这个文件也会改变App.config被跟踪的文件。
  • assume-unchanged在这些文件上使用 git ,但这必须由每个开发人员完成。

谢谢!

.net c# git visual-studio

6
推荐指数
0
解决办法
434
查看次数

具有自定义JWT身份验证的OAuth

我正在努力用OAuth和JWT实现自定义身份验证流。基本上应该如下:

  • 用户点击登录
  • 用户被重定向到第三方OAuth登录页面
  • 用户登录页面
  • 我获得了access_token并请求用户信息
  • 我获得了用户信息并创建了自己的JWT令牌来回发送

我一直在遵循有关如何构建OAuth身份验证的出色教程,唯一不同的部分是Jerrie正在使用Cookies

到目前为止,我所做的是:

配置了AuthenticationService

services.AddAuthentication(options => 
{
    options.DefaultChallengeScheme = "3rdPartyOAuth";
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie() // Added only because of the DefaultSignInScheme
.AddJwtBearer(options =>
{
    options.TokenValidationParameters = // Ommited for brevity
})
.AddOAuth("3rdPartyOAuth", options =>
{
    options.ClientId = securityConfig.ClientId;
    options.ClientSecret = securityConfig.ClientSecret;
    options.CallbackPath = new PathString("/auth/oauthCallback");

    options.AuthorizationEndpoint = securityConfig.AuthorizationEndpoint;
    options.TokenEndpoint = securityConfig.TokenEndpoint;
    options.UserInformationEndpoint = securityConfig.UserInfoEndpoint;

    // Only this for testing for now
    options.ClaimActions.MapJsonKey("sub", "sub");

    options.Events = new OAuthEvents …
Run Code Online (Sandbox Code Playgroud)

c# authentication oauth oauth-2.0 .net-core

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

2019 年 Windows 上的 Redis 状况?

我需要使用带有两个 Windows Server 2016 的 Redis Sentinel 以 HA 模式(在集群中)配置 Redis。四处搜索,有很多关于如何在 Windows 上安装 Redis 的材料,但它们似乎都没有......对我来说。

我到了这个页面,其中以有组织的方式列出了大部分内容:https : //github.com/ServiceStack/redis-windows

我基本上对所有这些都有问题,想了解一些事情,甚至可能得到推荐的方法来指导我:

  • 在 Windows 上的 Ubuntu 上安装 Redis
    • 这似乎……作弊。会有好的表现吗?在 Windows 上运行 Ubuntu VM 时,我是否能够以这种方式配置集群(没有太多麻烦)?
  • 流浪汉
    • 基本和上面一样
  • 微软本地端口
    • 这似乎不那么作弊,但另一方面已经过时了。可用版本适用于 Redis 3.0(最新版本为 5.0)。所以我担心我会错过很多好的功能和改进。

windows redis redis-sentinel

6
推荐指数
2
解决办法
4545
查看次数

将Facebook App域设置为IP地址

我在我的网站上登录了facebook,我正在本地测试localhost.现在我已将它放在服务器上,我正在尝试更改Facebook应用程序配置,以便我可以进行登录.在我之前:

App Domain:
localhost

Site URL:
http://localhost/

Mobile URL:
http://localhost/
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试将localhost更改为我的网站IP地址:107.170.**.**7:8776所以首先我将网站URL和移动URL设置为,http://107.170.**.**7:8776/但是当我尝试将应用程序域设置为时,107.170.**.**7:8776我得到一个感叹号:

This must be derived from Canvas URL, Secure Canvas URL, Unity Binary URL, Site URL, Mobile Site URL, Page Tab URL or Secure Page Tab URL. Check and correct the following domains: 107.170.**.**7:8776
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

提前致谢.

facebook facebook-apps facebook-login

5
推荐指数
1
解决办法
6467
查看次数