小编Ind*_*dra的帖子

检查车把中是否存在变量

我有一个javascript对象,如:

var data = {
"current" : 0,
"max" : 5,
"reward" : 5
};
Run Code Online (Sandbox Code Playgroud)

我正在使用车把装载这个数据的HTML,例如:

<div>
<span>Current : {{current}}</span>
<span>Max : {{max}}</span>
<span>Reward: {{reward}}</span>
</div>
Run Code Online (Sandbox Code Playgroud)

现在的问题是,奖励属性可能并不总是出现在数据中,在这种情况下,我不想显示该跨度.所以,我做了以下: -

{{#if reward}}
 <span>Reward: {{reward}}</span>
{{/if}}
Run Code Online (Sandbox Code Playgroud)

并且它正在工作,如果奖励属性不存在,它没有显示跨度,但如果奖励的值为0,它也没有显示跨度,任何人都可以建议如何解决它.我可以使用一些辅助函数.但是,如果不使用任何帮助函数,我可以这样做吗?

javascript handlebars.js

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

MongoDB在多个AWS实例中进行负载平衡

我们将amazon Web服务用于使用node.js服务器和mongodb作为数据库的业务应用程序.目前,node.js服务器正在EC2媒体实例上运行.我们将mongodb数据库保存在一个单独的微实例中.现在我们想在我们的mongodb数据库中部署副本集,这样如果mongodb被锁定或不可用,我们仍然可以运行我们的数据库并从中获取数据.

因此,我们试图将副本集的每个成员保留在不同的实例中,这样即使主要的memeber实例关闭,我们也可以从数据库中获取数据.

现在,我想在数据库中添加负载均衡器,以便即使在一次巨大的流量负载下数据库也能正常工作.在这种情况下,我可以通过在replicaSet中添加slaveOK配置来读取数据库的平衡.但是,如果数据库中的写入操作存在巨大的流量负载,它将不会对数据库进行负载平衡.

为了解决这个问题,到目前为止我有两个选择.

选项1:我要对数据库进行分片并将每个分片保存在单独的实例中.在每个分片下,将在同一个实例中设置一个reaplica.但是存在一个问题,因为分片将数据库分成多个部分,因此每个分片都不会在其中保留相同的数据.因此,如果一个实例关闭,我们将无法从该实例中的分片访问数据.

为了解决这个问题,我试图在分片中划分数据库,每个分片在不同的实例中都有一个replicaSet.因此,即使一个实例关闭,我们也不会遇到任何问题.但是如果我们有两个分片,每个分片在replicaSet中有3个成员,那么我需要6个aws实例.所以我认为这不是最佳解决方案.

选项2:我们可以在mongodb中创建一个主 - 主配置,这意味着所有数据库都是主数据库,并且所有数据库都具有读/写访问权限,但我也希望它们每隔一段时间自动同步一次,所以他们最终都成了彼此的克隆人.所有这些主要数据库都将在不同的实例中.但我不知道mongodb是否支持这种结构.

对于这种情况,我没有任何mongodb doc/blog.所以,请建议我应该是这个问题的最佳解决方案.

database load-balancing amazon-ec2 mongodb amazon-web-services

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

鼠标悬停时打开Angular材质菜单

我正在使用Angular Material菜单栏显示菜单和每个菜单项下的子菜单.我添加了ng-click事件来打开子菜单.但是鼠标悬停在父菜单项上时菜单仍然打开.不仅如此,因为我有两个子菜单,对于第一个子菜单项,子菜单在鼠标悬停时打开,但第二个子菜单在鼠标悬停时没有打开.如何在鼠标悬停时停止此菜单打开.我试图在父菜单项上的mouseenter上停止事件传播.但是在打开第二个子菜单时,第一个子菜单没有被隐藏.请帮我解决一下.

<div ng-controller="DemoBasicCtrl as ctrl" ng-cloak="" class="menuBardemoBasicUsage" ng-app="MyApp">

    <md-menu-bar>
      <md-menu>
        <button ng-click="$mdOpenMenu()">
          File
        </button>
        <md-menu-content>
          <md-menu-item>
            <md-menu>
              <md-button ng-click="$mdOpenMenu()">New</md-button>
              <md-menu-content>
                <md-menu-item><md-button ng-click="ctrl.sampleAction('New Document', $event)">Document</md-button></md-menu-item>
              </md-menu-content>
            </md-menu>
          </md-menu-item>
                        <md-menu-item>
            <md-menu>
              <md-button ng-click="$mdOpenMenu()">New</md-button>
              <md-menu-content>
                <md-menu-item><md-button ng-click="ctrl.sampleAction('New Document', $event)">Document</md-button></md-menu-item>
              </md-menu-content>
            </md-menu>
          </md-menu-item>

        </md-menu-content>
      </md-menu>

    </md-menu-bar>
Run Code Online (Sandbox Code Playgroud)

我现有的演示代码是演示.

menubar submenu angularjs angular-material

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

连接后断开 AWS IoT 设备

我正在开发一个 Web 应用程序,用户可以使用 AWS Cognito 登录。使用 AWS 凭证登录后,我正在连接到 AWS IoT 设备,例如

var device = AwsIot.device({ 
    clientId: clientID, 
    host: host, 
    accessKeyId: credentials.accessKeyId, 
    secretKey: credentials.secretAccessKey, 
    protocol: 'wss', 
    sessionToken: credentials.sessionToken, 
    offlineQueueing: 'false' 
}); 
Run Code Online (Sandbox Code Playgroud)

然后,一旦用户使用 AWS Cognito 从应用程序注销,使用

cognitoUser.signOut(); 
Run Code Online (Sandbox Code Playgroud)

然后注销后,我也想断开 AWS IoT 设备的连接。现在我看到即使在注销后设备仍在监听类似的事件

device.on('close', function() {}) 
device.on('error', function() {}) 
device.on('offline', function() {}) 
Run Code Online (Sandbox Code Playgroud)

有人可以指定我应该调用哪个函数来断开设备连接,以便它也不会监听这些事件。

我正在查看文档https://github.com/aws/aws-iot-device-sdk-js但我没有为此获得任何特定功能。

此外,我使用 AWS 凭证来连接 AWS IoT 设备,一旦我从 Cognito 注销,那么我认为该设备也应该自动断开连接。请让我知道这里应该采取什么方法。

amazon-web-services amazon-cognito aws-iot

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

在DynamoDB中使用主ID数组查询多个数据

我正在使用DynamoDB作为数据库的应用程序。我有一个类似的用户表:

{
   id: 1, (Primary Key)
   name: "Indranil"
}
Run Code Online (Sandbox Code Playgroud)

现在我的要求是,我有一个数组,其id为:[1,5,8],并且我想使用单个查询加载所有用户。

现在,我在查询中将id用作keyConditionExpreassion,可以一次又一次地获取每个用户数据,但随后将导致多个查询。

    let readparams  = {
      TableName : "user",
      KeyConditionExpression: "# = :",
      ExpressionAttributeNames:{
        "#": "id"
      },
      ExpressionAttributeValues: {
        ":id":1
      }
    };
Run Code Online (Sandbox Code Playgroud)

然后我看到表达式中有一个'IN'操作,但是不能在KeyConditionExpression中使用,它可以在FilterExpreassion中使用,但是在filterExpression中我不能使用主键。而且,我不能仅在查询中传递过滤器表达式,我也必须传递键表达式,但就我而言,我没有任何其他条件要检查。

    let readparams  = {
      TableName : "user",
      FilterExpression: "id IN (:id1, :id2)",
      ExpressionAttributeValues: {
        ":id1":1,
        ":id2":1
      }
    };
Run Code Online (Sandbox Code Playgroud)

所以最终我只剩下了唯一的选择,将所有数据加载到前端,然后在前端使用id过滤那些数据,但是显然这根本不是一个好的解决方案。

有人可以指出什么是最好的解决方案。

amazon-dynamodb aws-sdk

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

从状态提供者的解析方法改变角度app的状态

我在角度应用程序中使用ui-router.目前我有两条路线/登录和/用户.最初它在用户点击登录按钮时显示/登录,我发送ajax请求并获取用户ID.我将用户ID存储在localstorage中并将状态更改为/ user.

现在,我想要的是,如果用户没有登录,并且用户将地址栏更改为/ user,则不会更改视图,而是将地址栏网址再次更改为/ signin.

我试着使用解决方案,但它不起作用.我的代码是: -

module.exports = function($stateProvider, $injector) {
$stateProvider
.state('signin', {
    url: '/signin',
    template: require('../templates/signin.html'),
    controller: 'LoginController'
})
.state('user', {
    url: '/user/:id',
    template: require('../templates/user.html'),
    resolve:{
        checkLogin:  function(){
             var $state = $injector.get('$state');
            console.log("in resolve");
             if (! window.localStorage.getItem('user-id')) {
                 console.log("in if")
                  $state.go('signin');
             }
        }
    },
    controller: 'UserController'
 })

}
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

javascript angularjs angular-ui-router

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