小编I.K*_*.K.的帖子

带/不带引号的 Javascript 对象属性

我是一名 JavaScript 学习者,想知道两者之间有什么区别

    var obj1 = {
        attribute1 : 1
    };
    
    var obj2 = {
        "attribute1" : 1
    };
    
    console.log(obj1.attribute1);
    console.log(obj2.attribute1);
Run Code Online (Sandbox Code Playgroud)

两者都打印1。它们之间有很大的区别吗?

javascript

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

JavaScript Promise声明差异

我是一名JavaScript学习者,并且有关于Promises的问题。

使用对象函数resolve时Promise,没有出现预期的错误。喜欢 :

var promise1 = Promise.resolve(3);
Run Code Online (Sandbox Code Playgroud)

但是,当我使用以下声明时:

var promise2 = new Promise(function(resolve, reject) {
    setTimeout(resolve, 1000, 'foo');
});
promise2.resolve(4)
Run Code Online (Sandbox Code Playgroud)

这不是一回事吗?或者如果promise2也是Promise类对象,为什么会出现类似以下错误:

TypeError: promise2.resolve is not a function
    at Object.<anonymous>
Run Code Online (Sandbox Code Playgroud)

javascript

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

减少mongodb中的值

我正在创建一个购物应用程序。每个用户都有钱包。结构如下:

{ 
    "userName" : "Gandalf the Grey",
    "wallet" : 100,
    "orderHistory" : []
}
Run Code Online (Sandbox Code Playgroud)

假设该用户购买了 50 件的商品。有没有更好的方法而不是用 findOne 获取其钱包值,然后进行减法并更新新的钱包值?现在,我正在通过两种不同的操作来实现它,看起来像

dbo.collection('users').findOne({'userName': controller.userName})
.then(function(doc) { 
    updateWallet(doc); 
}
Run Code Online (Sandbox Code Playgroud)

然后

let newWalletBalance = doc.wallet - product.cost;
dbo.collection('users').updateOne(
    {'userName':controller.userName},
    { $set: {wallet: newWalletBalance } }
);
Run Code Online (Sandbox Code Playgroud)

是否有可能将它们合而为一?

mongodb node.js mongodb-query

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

如何在 DynamoDB 中实现按项目的任意属性排序

我的 DynamoDB 结构如下。

  1. 我有患者,其患者信息存储在其文档中。
  2. 我有索赔,索赔信息存储在其文档中。
  3. 我的付款信息存储在其文档中。
  4. 每项索赔都属于患者。患者可以提出一项或多项索赔。
  5. 每一笔付款都属于患者。患者可以有一次或多次付款。

我只创建了一张 DynamoDB 表,因为所有 aws dynamodb 文档都表明如果可能的话仅使用一张表是最佳解决方案。所以我最终得到以下结果: 基表

在此表中,ID 是分区键,EntryType 是排序键。每项索赔和付款都有其所有者。我的访问模式如下:

  1. 列出数据库中的所有患者,并按创建日期对患者进行分页。
  2. 通过分页列出数据库中的所有声明,并按创建日期排序。
  3. 列出数据库中的所有付款并分页,付款按创建日期排序。
  4. 列出特定患者的索赔。
  5. 列出特定患者的付款情况。

我可以通过两个全局二级索引来实现这些。我可以使用 GSI(以 EntryType 作为分区键、以 CreationDate 作为排序键)列出按创建日期排序的患者、索赔和付款。此外,我还可以使用另一个具有 EntryType 分区键和 OwnerID 排序键的 GSI 来列出患者的索赔和付款。

我的问题是这种方法只能对创建日期进行排序。我的患者和索赔有更多的属性(每个属性大约 25 个),我还需要根据每个属性对它们进行排序。但 Amazon DynamoDB 有一个限制,即每个表最多可以有 20 个 GSI。因此,我尝试动态创建 GSI(根据请求动态创建),但效率也非常低,因为它将项目复制到另一个分区来创建 GSI(据我所知)。那么,按患者姓名、按索赔说明以及他们拥有的任何其他字段对患者进行排序的最佳解决方案是什么?

amazon-dynamodb dynamodb-queries amazon-dynamodb-index

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

使用 Python 检测可用的网络适配器

我想检测连接到 DHCP 并从中获取 IP 的可用网络接口。我正在使用以下脚本来生成可用适配器的列表。

import psutil
addrs = psutil.net_if_addrs()
all_network_interfaces = addrs.keys()
available_networks = []
for value in all_network_interfaces:
    if addrs[value][1][1].startswith("169.254"):
        continue
    else:
        available_networks.append(value)
print(available_networks)
Run Code Online (Sandbox Code Playgroud)

以 169.254 开头的适配器是使用自动专用 IP 寻址 (APIPA) 的适配器,因此我想将它们过滤掉。当我使用以太网电缆连接时,此脚本会显示相关适配器,如果我在以太网仍然连接的情况下也通过 WiFi 连接,则会将 WiFi 添加到列表中。然而,在断开与 WiFi 的连接后,WiFi 适配器仍然保留该 IP,并且仍然存在于列表中。我认为这是我的适配器卡的问题(可能是功能问题)。绕过此问题并仅获取具有 DHCP 连接的适配器的最佳方法是什么?

python networking psutil

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