小编Min*_*ngo的帖子

dynamodb.put().promise() 不返回放置对象

我正在尝试使用有关 aws 和 dynamo db 的 async/await 功能。下面是一个如何在异步等待前放置对象的示例,正​​如您在回调中看到的,您可以访问包含放置对象的数据。但是,在使用 async 和 promise 的第二个代码块中,结果是一个空对象,有什么想法吗?

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.03.html

非承诺版本

var docClient = new AWS.DynamoDB.DocumentClient();

var table = "Movies";

var year = 2015;
var title = "The Big New Movie";

var params = {
    TableName:table,
    Item:{
        "year": year,
        "title": title,
        "info":{
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
};

console.log("Adding a new item...");
docClient.put(params, function(err, data) {
    if (err) {
        console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
        console.log("Added item:", …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services node.js amazon-dynamodb aws-sdk-js

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

Mongo C#Fluent Aggregation Pipeline Group匿名类型键异常

我在10gen Mongo C#驱动程序的v2中使用了新的Fluent Aggregation Pipeline,但在尝试按多个字段分组时遇到异常(下面的示例代码).

抛出的异常是......

命令聚合失败:异常:必须将组聚合字段"Month"定义为对象内的表达式.

我可以通过为我的组密钥创建一个类型来使用它,但是我更喜欢使用匿名类型,因为我需要创建的类型不会用于其他目的.

var agg = db.GetCollection<Order>("orders").Aggregate();

var project = agg.Project(o => new {o.Value
                                  , o.Product
                                  , Month = o.Date.Month
                                  , Year = o.Date.Year});

var group = project.Group(
  key => new { key.Month, key.Product},
  g => new OrderSummary {Month = g.Key.Month
                        ,Product = g.Key.Product
                        , TotalSales = g.Sum(o => o.Value)});

var result =  group.ToListAsync().Result;
Run Code Online (Sandbox Code Playgroud)

以供参考 ...

public class Order : Entity
{

    public DateTime Date { get; set; }

    public string Product { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# mongodb 10gen-csharp-driver aggregation-framework mongodb-.net-driver

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

在日志格式化程序中提取日志记录调用中的额外字段

所以我可以像这样向我的日志消息添加其他字段

logging.info("My log Message", extra={"someContext":1, "someOtherContext":2})
Run Code Online (Sandbox Code Playgroud)

这很好

但不清楚如何提取日志格式化程序中的所有额外字段

def format(self, record):
  record_dict = record.__dict__.copy()
  print(record_dict)
Run Code Online (Sandbox Code Playgroud)

在上面我可以看到输出字典中的所有额外字段,但它们被展平为一个字典,其中包含我不想要的其他垃圾负载

{'name': 'root', 'msg': 'My log Message', 'args': (), 'levelname': 'INFO', 'levelno': 20, 'pathname': '.\\handler.py', 'filename': 'handler.py', 'module': 'handler', 'exc_info': None, 'exc_text': None, 'stack_info': None, 'lineno': 27, 'funcName': 'getPlan', 'created': 1575461352.0664868, 'msecs': 66.48683547973633, 'relativeCreated': 1253.0038356781006, 'thread': 15096, 'threadName': 'MainThread', 'processName': 'MainProcess', 'process': 23740, 'someContext': 1, 'someOtherContext':2}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以获取我所有的额外钥匙,而不必预先知道它们?

我正在编写一个 json 格式化程序并想创建一个 dict a la

justMyExtra = ?????
to_log = {
"message" record_dict["message"], 
**justMyExtra
}
Run Code Online (Sandbox Code Playgroud)

python logging python-3.x

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

Knockoutjs复选框已更改事件

我有一些复选框绑定到我的模型中的数组.这非常有用,当您选中一个框时,数组会相应更新.

但是当值发生变化时,我希望在我的模型上调用一个方法来过滤给定新值的结果.我已经尝试连接更改事件,但这似乎在更改之前而不是在更改之后具有值.

我已经在一个jsfiddle http://jsfiddle.net/LpKSe/中说明了我的问题,这可能会让这更有意义.

为了完整,我的代码在这里重复.

JS

function SizeModel() {
    var self = this;
    self.sizes = ko.observableArray(["small", "medium", "large"]);
    self.sizes2 = ko.observableArray(["small", "medium", "large"]);
    self.getResults = function(e) {
        alert(self.sizes());
    };
    self.getResults2 = function(e) {
        alert(self.sizes2());
    };
}

$(document).ready(function() {
    sizeModel = new SizeModel();

    ko.applyBindings(sizeModel);
});?
Run Code Online (Sandbox Code Playgroud)

HTML

<h3>Size
  <input type="checkbox" value="small"  data-bind=" checked: sizes, event:{change: getResults}"/>
  <span class='headertext'>Small</span>
  <input type="checkbox"  value="medium" data-bind=" checked: sizes, event:{change: getResults}"   />
  <span class='headertext'>Medium</span>
  <input type="checkbox"  value="large" data-bind=" checked: sizes, event:{change: getResults}"  />
  <span class='headertext'>Large</span>
</h3> …
Run Code Online (Sandbox Code Playgroud)

javascript mvvm knockout-2.0 knockout.js

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

将过滤器行添加到动态创建的kickout.js网格

我有用于绑定到结果表的视图模型。该视图动态呈现结果表,而无需任何先验的列数或列名知识,这很棒。类似于此处描述的内容并且为了保持通用而不是特定于域的目的,我从此处回答的问题中修改了代码示例。

但是我需要添加一个过滤器行以允许用户进行过滤,我已经基于下面的代码中的列名添加了一行输入,并尝试将它们绑定到视图模型。将它们绑定到视图模型很重要,这样当我刷新网格时,视图模型就会知道所应用的任何过滤器。

我已经尝试了几件事

  • 首先,如下面的代码片段所示,我创建了一个可观察的过滤器对象,并尝试将表中的每个字段绑定到该过滤器对象的属性。但是,这似乎不起作用。
  • 我尝试的另一个选择是基于列名创建一个可观察的过滤器对象数组,并将过滤器列绑定到似乎也不起作用的那个对象

任何想法将不胜感激

非常感谢,埃德

JS

var VM = function () {
  var self = this;
  self.items = ko.observableArray();
  self.filters = ko.observable({});

  self.columnNames = ko.computed(function () {
    if (self.items().length === 0)
        return [];
    var props = [];
    var obj = self.items()[0];
    for (var name in obj)
        props.push(name);
    return props;


  });

};
var vm = new VM();

ko.applyBindings(vm);

vm.items.push({
  'Name': 'John',
  'Age': 25
});
vm.items.push({
'Name': 'Morgan',
'Age': 26
});
Run Code Online (Sandbox Code Playgroud)

查看:

<table>
  <thead>
    <tr data-bind="foreach: …
Run Code Online (Sandbox Code Playgroud)

knockout.js

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

dynamodb获取项目打字稿地狱

任何人都可以解释在调用DocumentClient.get时如何使用GetItemInput类型,如果我传入任何类型的对象都可以工作,但是如果我尝试强烈键入params对象,则会收到错误消息

ValidationException:提供的键元素与架构不匹配

这是我的lambda函数代码,我在其中传递参数作为任何类型...

export const get: Handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {

  console.log(event.pathParameters)
  if (!event.pathParameters) {
    throw Error("no path params")
  }

  const params: any = {
    Key: {
      id: event.pathParameters.id
    },
    TableName: table
  }

  console.log(params)
  try {
    const result: any = await dynamoDb.get(params).promise()
    return {
      body: JSON.stringify(result.Item),
      statusCode: result.$response.httpResponse.statusCode
    }

  } catch (error) {
    console.log(error)
    return {
      body: JSON.stringify({
        message: `Failed to get project with id: ${event.pathParameters!.id}`
      }),
      statusCode: 500
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试使其与GetItemInput类型一起使用 …

amazon-web-services amazon-dynamodb aws-sdk aws-lambda aws-sdk-js

0
推荐指数
2
解决办法
1212
查看次数