小编cyb*_*bat的帖子

为什么Symfony2验证propertyPath valus在方括号中?

我正在验证一些值:

$collectionConstraint = new Collection(array(
    'email' => array(
        new NotBlank(),
        new Email(),
    ),
    'password'  => array(
         new NotBlank(),
         new MinLength(array('limit' => 6)),
         new MaxLength(array('limit' => 25)),
    ),
));
$data = array('email' => $this->getRequest()->get('email'), 'password' => $this->getRequest()->get('password'));
$errors = $this->get('validator')->validateValue($data, $collectionConstraint);
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,字段(propertyPath)存储方括号 - 我想了解为什么Sf这样做.我必须手动删除所有看似荒谬的括号,所以我想我在某处遗漏了一些功能.

转储$错误:

Symfony\Component\Validator\ConstraintViolationList Object
(
    [violations:protected] => Array
        (
            [0] => Symfony\Component\Validator\ConstraintViolation Object
                (
                    [messageTemplate:protected] => This value should not be blank
                    [messageParameters:protected] => Array
                        (
                        )

                    [root:protected] => Array
                        (
                            [email] => 
                            [password] => 
                        )

                    [propertyPath:protected] => …
Run Code Online (Sandbox Code Playgroud)

symfony

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

较少的CSS守卫没有mixin

我刚刚进入LESS,并试图找出如何在没有mixins的情况下制作条件css语句.我发现我有很多单行css语句只出现一次但依赖于某些变量或条件,并且使用mixins有点无意义,因为它永远不会被重用.

例.

@add-margin: true;

body {
    margin-top: 20px;  //I only want this if add-margin is true
}
Run Code Online (Sandbox Code Playgroud)

理想情况下我想要这个:

body when (@add-margin) {
     margin-top: 20px;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.使用mixin有效,但似乎很傻,只为一个衬垫制作一个.有没有其他方法可以做到这一点?

谢谢

less

5
推荐指数
2
解决办法
1735
查看次数

403/Express 3/Node的禁止错误自定义页面

如何创建一条处理来自Express的403错误的路由?我有默认路由捕获404/500但似乎在去路由器之前停止.只需将转储堆叠到屏幕上.

node.js express

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

Express 3的跨会话问题

我有一个非常奇怪的会话问题 - 一些令人困惑的奇怪的交叉会话问题.

基本上我有一个快速3应用程序,其中我有2个,看似无关的东西 - 一个是标准的联系表单,有人可以用来给我发电子邮件,另一个是对mailchimp的API调用,以便在订购时添加订阅者.这是两个完全不同的呼叫/动作.

在我的联系表单的顶部,我检查变量'error',我可以在我的控制器代码中使用它来说出诸如"无效的电子邮件"或其他错误消息.我的联系表单有2个控制器操作 - 一个用于显示表单,另一个用于POST,提交并显示错误(如果有).

问题是这样的 - 当我最初加载联系表单时,我看到以下消息:"错误:someone@example.com已经订阅了列表常规.单击此处更新您的个人资料." 这是一条MailChimp消息 - 不仅与进程无关,而且与我的会话无关!如果返回的客户下订单并且他们已经订阅,则会发生此错误.我没有向他们展示这个消息,据我所知,实际上并没有存储它.所以我很困惑.

需要注意的一点是,订单部分是在从支付网关接收xml文件时从节点服务器调用的(因此不是常规会话用户) - 所以可能有一些会话内部我不理解.

代码如下,但这里是问题的摘要.没有用户会话活动的节点服务器正在对mailchimp进行API调用以使用此模块添加订阅者- 通常同一个电子邮件将被订阅两次,因此mailchimp将回复"已订阅"的消息,我*不要在Express的错误本地存储或加载.然后,用户访问该站点,转到联系表单,该表单检查来自该用户的任何错误消息是否尝试提交表示缺少字段的表单 - 并且他们看到mailchimp消息显示另一个人的电子邮件地址.

这是相关的代码.

app.js:

var express = require("express"),
flash = require("connect-flash");

...

app.use(flash());

...

app.use(function(req, res, next) {
  var msgs;
  msgs = req.session.messages || [];
  res.locals.messages = msgs;
  res.locals.hasMessages = !!msgs.length;
  req.session.messages = [];
  return next();
});

...

app.get("/contact", express.csrf(), routes.main.contact);
app.post("/contact", express.csrf(), routes.main.submit);
Run Code Online (Sandbox Code Playgroud)

联系表格控制器:

exports.contact = function(req, res) {
    res.locals.token = req.session._csrf;
    res.render('main/contact');
};

exports.submit …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express

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

使用真实XHR数据/ passThrough()进行AngularJS/Karma单元测试

我想使用passThrough()为我的单元测试使用真正的$ http数据.

这是我到目前为止所拥有的:

var should = chai.should();
beforeEach(module('myApp', 'ngMockE2E'));
beforeEach(inject(function(_$httpBackend_, _$rootScope_, _$http_) {
  $scope = _$rootScope_;
  $http = _$http_;
  $httpBackend = _$httpBackend_;
}));

it.only('blah', function(done) {
 $httpBackend.whenGET('/api/data').passThrough();

  $scope.$apply(function() {
  $http.get('/api/data').success(function(data) {
   data.should.eql({"foo": "bar"});
    done();
  });
});

// Evidently not required with E2E
//$httpBackend.flush();

});
Run Code Online (Sandbox Code Playgroud)

但是这给出了一个错误:

Unexpected request: GET /api/data
No more request expected
Error: Unexpected request: GET /api/data
No more request expected
Run Code Online (Sandbox Code Playgroud)

如果我删除了应用调用,它会超时.

javascript unit-testing angularjs karma-runner

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

保存Mongoose文档时出现版本错误

我有一个问题 - 不确定我做错了什么或者是一个错误.我有一些产品 - 每个产品都有一系列的变化.我想查看一些数据并在这些变体中加载它,但我遇到了一些"VersionError:找不到匹配的文档"错误.

以为我有一个竞争条件(我按顺序为我修改的每个变体保存相同的文档)我使用了asyc.eachSeries()但这没有帮助.一次加载导致文档错误的错误不会产生错误,所以它似乎与某些竞争条件有关但我无法追踪它.

架构:

var Product = new Schema({
  title: {
    type: String,
  },  
  variations: {
    type: Array
  }
});
Run Code Online (Sandbox Code Playgroud)

示例代码:

// Some data to load - the 'variant' is the index of the variations array above
var records = [{
  code: 'foo',
  id: '50ba9c647abe1789f7000073',
  variant: 0
}, {
  code: 'bar',
  id: '50ba9c647abe1789f7000073',
  variant: 1
}, {
  code: 'foobar',
  id: '50ba9c647abe1789f7000073',
  variant: 2
}];

var iterator = function(item, cb) {
  Product.findById(item.id).exec(function(err, product) {
    if(err) {
      return cb(err); …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js

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

获取原始文档字段作为聚合结果的一部分

我想在我的聚合结果中获取所有文档字段,但是一旦我使用$ group它们就消失了.使用$ project允许我读取我在$ group中定义的任何字段,但是在获取其他字段方面没有运气:

var doc = {
  _id: '123',
  name: 'Bob',
  comments: [],
  attendances: [{
    answer: 'yes'
  }, { 
   answer: 'no'
  }]       
}

aggregate({
    $unwind: '$attendances'
  }, {
    $match: {
      "attendances.answer": { $ne:"no" }
    }
  }, {
    $group: {
    _id: '$_id',
    attendances: { $sum: 1 },
    comments: {  $sum: { $size: { $ifNull: [ "$comments", [] ] }}}
  } 
}, {
  $project: {
    comments: 1,
  }
}
Run Code Online (Sandbox Code Playgroud)

这导致:

[{
  _id: 5317b771b6504bd4a32395be,
  comments: 12 
},{
  _id: 53349213cb41af00009a94d0,
  comments: 0 
}] …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

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

为什么base64/openssl使用填充字符'K'而不是'='

我注意到php base64_encode使用'='作为填充字符.根据维基百科,不同类型使用'='或无.但是CLI base64命令以及openssl enc -base64使用"K"作为填充.我正在寻找有关他们使用的原因和实施方式的信息.

echo base64_encode('hello'); // aGVsbG8=
echo hello | base64 -i - // aGVsbG8K
openssl enc -base64 <<< hello   // aGVsbG8K
Run Code Online (Sandbox Code Playgroud)

base64

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

记录 Fastify 响应正文

如何在 Fastify 中记录响应正文?主体似乎没有作为响应对象的一部分公开:

const fastify = require('fastify')({
  logger: {
    serializers: {
      res: function (res) { 
        // No body in req afaik
        return {  } 
      }
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

node.js fastify

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

使用 CDK 创建跨账户 IAM Lambda 角色

在我的场景中,我有 2 个帐户(11111111、22222222)需要调用第三个帐户中的 lambda:33333333。第三个帐户中的 lambda 将从前 2 个帐户中的 lambda 调用。

第三个帐户中的 lambda 是动态创建的,但我需要给它们一个我希望使用 CDK 创建的角色(我将使用第三个帐户信用来执行此操作 - 这里没有跨帐户的东西)。

我按照此处的说明进行操作- 使用 STS 调用 lambda 似乎很简单。我不完全清楚的是如何定义 cdk 中的第三个帐户角色。

这是我的堆栈:


export class ModuleIAMStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props)

    const lambdaModuleRole = new Role(this, 'moduleRole', {
      roleName: 'moduleRole',
      assumedBy: new AccountPrincipal({ accountId: '111111111' }),
      managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')] // My lambdas in 3X... will not need to access any resources so this should be enough to execute
    }) …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cdk

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