小编use*_*521的帖子

如何访问mongoose.js中的oplog?

我有正在使用的应用程序mongoose.js.直到现在我正在使用单个实例mongod.但最近我改为复制品.

我如何在mongoose.js中访问oplog集合?我的意思是我如何从另一个db(local)获取集合?所以,假设我已连接到db并拥有mongoose.connection- 我现在如何查询oplog?

mongoose mongodb node.js

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

如何根据该列将 SELECT 输出列转换为任意值?

现在我有以下查询:

SELECT "type" AS "modifiedType"
FROM "Table" 
WHERE "type" = 'type1' OR "type" = 'type2'
Run Code Online (Sandbox Code Playgroud)

modifiedType我想要的是这样返回:

if "type" = 'type1' then 'modifiedType1'
else if "type" = 'type2' then 'modifiedType2'
Run Code Online (Sandbox Code Playgroud)

所以我只想根据原始列值用另一个值修改列值。ENUM在非字符串中键入列。

我正在使用 Postgres 9.3(或 9.4?)。

sql postgresql

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

如何在从API返回之前过滤_source?

我在_source索引文档中有很多字段.但是我并不需要从搜索查询中返回所有这些内容.对于每个找到的文件,_source现在返回整个文件.我如何强制只接收每个特定的字段_source

elasticsearch elasticsearch-query

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

是否有可能(如何?)从"更新后"触发器返回旧值

UPDATE "Users" 
SET "displayName" = 'new_name' 
WHERE id = 1 
RETURNING "displayName"
Run Code Online (Sandbox Code Playgroud)

上面的查询返回NEW值.我想知道更新后的OLDdisplayName.我知道有可能:

 UPDATE ... 
 FROM SELECT ... 
 RETURNING ...
Run Code Online (Sandbox Code Playgroud)

但我想使用AFTER UPDATE触发器.是否有可能以AFTER UPDATE某种方式从触发器"返回"旧值?如果是这样的触发器体如何?

sql postgresql sql-update postgresql-9.3

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

带有 api 网关的微服务授权模式

假设我正在开发博客平台,用户可以在其中注册帐户、支付订阅费用并创建自己的博客。平台由以下微服务组成:

  • 帐户服务
  • 授权服务
  • 订阅服务
  • 博客服务
  • api网关

我正在考虑实现 api-gw 模式,其中除 api-gw 之外的所有微服务都将部署到私有网络(在那里它们将能够通过消息代理同步或异步地直接相互交谈),并且它们只能通过api-gw。

API 将有两个客户端/消费者:

  • 前端(针对客户)
  • cms(对于管理员)

因此我想使用单独的api-gw-per-client模式,所以实际上会有两个api网关,一个用于常规前端(frontent-api-gw),一个用于cms(cms-api-gw),但两者都将使用相同的微服务。

我的问题是关于授权以及它应该在哪里进行(或者更确切地说,不同方法的优缺点是什么)。让我们关注两个“端点”:

  1. frontend-api-gw::createBlog() => blog-service::createBlog()

前端 api-gw 公开端点以创建新博客,并且此 api 调用“转发”到 blog-service::createBlog() 端点。假设用户已经通过身份验证(即,带有用户 ID 的正确 JWT 与请求一起传递给 api-gw)。

必须进行的授权是确定具有此 ID 的用户是否可以创建新博客。这可以通过调用 subscription-service 检查用户是否已付费订阅来完成。主要问题是该授权是否仍应在 api-gw 端 (A) 或博客服务端 (B) 进行:

在此处输入图片说明

  1. cms-api-gw / frontend-api-gw::listBlogs() => blog-service::listBlogs()

类似的情况 - 是否应该将任何格式的 userContext / JWT 传递给每个单独的微服务,并且该微服务应该决定返回什么?或者个别微服务不应该知道 userContext(可能只是为了记录目的),依赖 API GW 授权而只接收一些参数/参数?

在此处输入图片说明

我的想法:

在案例 A 中,由于授权层,每个单独的微服务中的逻辑更加复杂。如果有更多 API gw、用户角色等,可能会变得更复杂。 然而,在这种情况下,API GW 更简单,它只将请求转发到微服务。

在情况 B 中,每个单独的微服务中的逻辑不那么复杂、简单和直接。但是API GW中有更多的逻辑,因为它必须为所有平台实现授权(至少对于这个api GW负责的部分)。也许将所有授权集中在一个地方而不是跨微服务传播也是一种优势?

同样,在 B 的情况下,我认为各个微服务之间的耦合较少。

你们如何看待这两种方法/也许您还有其他“想法”?

architecture authorization microservices

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

WPF,ObservableCollection/BindingList绑定到ListView

我有问题将ObservableCollection绑定到LisView.问题是只有当我从ObservableCollection中添加/删除项目时,Binding才能正常工作.但是当我在ObservableCollection中更改一个项的属性时,ListView仍然显示旧值.我知道这是一个普遍的问题,寻找解决的办法,大家说,我应该使用的BindingList ObservableCollectione的,因为的ObservableCollection不传播的PropertyChanged事件和做的BindingList.所以我改为绑定列表,但问题仍然存在.

类:

public class Network
{
    public class Layer : INotifyPropertyChanged
    {
        public enum ActivFunction { LINEAR, EXPONENTIAL, ARCUSTANGENT }

        private string name;

        public string Name
        {
            get
            {
                return name;
            }
            set 
            {
                name = value;
                RaisePropertyChanged("Name"); 
            }
        }

        public ActivFunction Activation { get; set; }
        public int Neurons { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void RaisePropertyChanged(String propertyName)
        {
            if ((PropertyChanged != null))
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

    }

    public BindingList<Layer> Layers { …
Run Code Online (Sandbox Code Playgroud)

c# wpf

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

如何压缩多个文件夹生成多个.zip文件在gulp?

我的文件夹结构如下所示:

- /projects
- /projects/proj1
- /projects/proj2
- /projects/proj3
- /zips
Run Code Online (Sandbox Code Playgroud)

对于projects(proj1,proj2和proj3)中的每个文件夹,我想压缩每个文件夹的内容并生成proj1.zip,proj2.zipproj3.zip/zips文件夹中.

以下示例函数从proj1文件夹生成单个zip文件

zip = require('gulp-zip');
gulp.task('default', function () {
    return gulp.src('./projects/proj1/*')
        .pipe(zip('proj1.zip'))
        .pipe(gulp.dest('./zips'));
});
Run Code Online (Sandbox Code Playgroud)

但是我如何为项目中的每个文件夹执行此类任务?我可以把所有的文件夹都压缩gulp.src('./projects/*')但是呢?

gulp

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

好像每个容器实例不能放置三个以上的任务?

我有 10 个服务/任务定义,每个定义需要 512 个内存和 10 个 cpu(来自容器定义)。我有三个 t2.medium 实例,每个实例都有 4GB 内存。所以最多启动24个任务实例应该没问题。

然而,这三个实例最多只能运行 7 个服务 (3/2/2)。对于未在“事件”选项卡中运行的服务,存在以下错误:

服务完整性检查无法放置任务,因为没有容器实例满足其所有要求。最接近的匹配容器实例 3e2dbe6a-7a07-46f2-846b-ccccb9adaeee 遇到错误“RESOURCE:ENI”。

我尝试将 ec2 实例上的 AMI 更新为最新的 ecs-optimized,但没有帮助。一个 ec2/container 实例好像不能启动 3 个以上的任务?奇怪的是,它在 1 个月前运行良好(所有 10 个服务都在运行)并且这些错误在大约 20-26 天前出现。

任何的想法?

每个服务都使用 awsvpc 网络模式和 awslog 日志驱动程序。


以下是我列出的网络接口:

在此处输入图片说明

amazon-ec2 amazon-web-services amazon-ecs

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

将任何对象数组格式化为字符串

如果对象是数组我想返回它的字符串表示如下:

using System;
using System.Linq;
using Xunit;
using Xunit.Abstractions;

namespace Tests.UnitTests
{
    enum TestEnum {
        A,
        B
    }

    public class MyClass {

        private readonly ITestOutputHelper _testOutputHelper;

        public static string ObjectToString(object? obj) {
            if (obj?.GetType().IsArray == true)
            {
                return string.Join(",", obj); // <-- does not work, returns "Tests.UnitTests.TestEnum[]"
                return string.Join(",", ((object[]) obj).AsEnumerable()); // <-- does not work, throws "Unable to cast object of type 'Tests.UnitTests.TestEnum[]' to type 'System.Object[]"
                return string.Join(",", ((Enum[]) obj).AsEnumerable()); // <-- does not work, throws "Unable to cast …
Run Code Online (Sandbox Code Playgroud)

c#

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

如何比较相同泛型类型的两个值?

以下代码将无法编译:

class Test<T> where T : class, IComparable
{
    public bool IsGreater(T t1, T t2)
    {
        return t1 > t2; // Cannot apply operator '>' to operands of type 'T' and 'T'
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?我希望它适用于 T = intdoubleDateTime等。

c#

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