小编Cod*_*ely的帖子

防止猫鼬中的重复记录

我对 MongoDb / Mongoose 相当陌生,更习惯于 SQL Server 或 Oracle。

我有一个相当简单的事件架构。

EventSchema.add({
  pkey: { type: String, unique: true },
  device: { type: String, required: true },
  name: { type: String, required: true },
  owner: { type: String, required: true },
  description: { type: String, required: true },
});
Run Code Online (Sandbox Code Playgroud)

我正在查看Mongoose Indexes,它显示了两种方法,我使用了字段定义。

我还有一个非常简单的 API,它接受 POST 并在此集合上调用 create 以插入记录。

我编写了一个测试,检查是否不应该插入具有相同 pkey 的记录,以及 unique:true 是否正在运行。我已经有一组我读入数组的事件,所以我只是再次发布这些事件中的第一个,看看会发生什么,我预计 mongo DB 会抛出 E11000 重复键错误,但这并没有发生。

var url = 'api/events';
var evt = JSON.parse(JSON.stringify(events[0]));

// POST'ed new record won't …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb mongoose-schema

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

LINQ选择SQL视图得到错误的答案

我有一个SQL视图,产生一个8列的响应.它是一个相当复杂的,所以我不会在这里列出它,它不会增加我想要了解的问题.

当我使用此查询直接在SQL Manager中查询视图时

SELECT * FROM [GPPS].[dbo].[PartIndex]
WHERE CategoryNameId = 182 AND CycleId = 13 AND BasketId = 304 AND MarketId = 8
ORDER BY ProductNameId
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果(前两行很重要)

218   13    8   304 182 124 32575   162.84
218   13    8   304 182 124 32576   184.08
218   13    8   304 182 125 32577   156.13
218   13    8   304 182 127 32578   605.84
218   13    8   304 182 130 32579   141.51
Run Code Online (Sandbox Code Playgroud)

当我对视图执行以下LINQ时

PartIndexes.Where(x => x.CategoryNameId == 182 
                       && x.CycleId == 13 
                       && x.BasketId == …
Run Code Online (Sandbox Code Playgroud)

c# sql linq view

8
推荐指数
3
解决办法
5949
查看次数

反应路由器,匹配通配符作为参数

我有一个遗留的Web应用程序正在被React取代,它被这些不同的系统调用,通过传递一个URL(从记录和现有数据库系统派生)应用程序呈现文件夹视图,沙盒容器中的文件根据路径传入.

我需要能够识别这些请求并将它们路由到文件/文件夹处理页面,将路径的'/ files /部分后面的所有内容作为参数处理到文件或文件夹的路径.

<Route path="/" handler={Master}>
  <Route name="files_link" path="files" handler={Files} />
  <Route name="filesWithPath_link" path="files/*:path" handler={Files} />
</Route>
Run Code Online (Sandbox Code Playgroud)

我希望能够处理传入的请求

/files  
Run Code Online (Sandbox Code Playgroud)

并在页面中处理它(默认为顶级文件夹,因为没有路径参数传递.

并将以下所有可能的URL示例传递给路由器,并从/ files /之后的位中提取路径参数.

/files/folder                                 path=folder
/files/folder/filename.ext                    path=folder/filename.ext
/files/folder/folder1                         path=folder/folder1
/files/folder/folder1/filename.ext            path=folder/folder1/filename.ext
/files/folder/folder1/folder2/                path=folder/folder1/folder2
/files/folder/folder1/folder2/filename.ext    path=folder/folder1/folder2/filename.ext

.... and so on ...
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我得到一个错误

Uncaught Invariant Violation: Missing "splat" parameter for path "/beta/page/files/*:path"
Run Code Online (Sandbox Code Playgroud)

我目前正在使用react0.14.2和react-router0.13.4.

你如何在React-router中以这种方式处理可变长度路径?

wildcard url-routing react-router

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

SignalR 2.0使用Ninject注入接口

我有以下简单的Hub类来列出使用注入用户服务的用户.使用NinjectSignalRDependencyResolver的启动类.非常简单的客户端脚本.

[HubName("dashboardHub")]
public class DashboardHub : Hub
{
    private readonly IUserService _users;

    public DashboardHub(IUserService users)
    {
        _users = users;
    }

    public void Initialize()
    {
        var users = _users.ListUsers();

        Clients.All.UpdateStatus(users);
    }
}
Run Code Online (Sandbox Code Playgroud)

startup.cs

  var kernel = new StandardKernel();
  var resolver = new NinjectSignalRDependencyResolver(kernel);

  var config = new HubConfiguration()
  {
        Resolver = resolver,
  };

  app.MapSignalR(config);
Run Code Online (Sandbox Code Playgroud)

NinjectSignalRDependencyResolver

public class NinjectSignalRDependencyResolver : DefaultDependencyResolver
{
    private readonly IKernel _kernel;

    public NinjectSignalRDependencyResolver(IKernel kernel)
    {
        _kernel = kernel;
    }

    public override object GetService(Type serviceType)
    {
        return …
Run Code Online (Sandbox Code Playgroud)

.net dependency-injection ninject signalr

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

将表达式<Func <T,V >>转换为表达式<Func <T,Nullable <V >>>

我有一个方法,它采用IOrderedQueryable和Expression <Func <T,V >>,它用作SQL数据库中的过滤器和页面记录.

var query = contexBills.AsNoTracking().Where(x => x.Complete==true).OrderBy(x => x.BillID);

var reader = new BulkReader<Bill>(query, x => x.BillId, 10000);
Run Code Online (Sandbox Code Playgroud)

批量阅读器广泛用于整个代码中,以分页大量记录并批量处理它们,并按此定义

public BulkReader(IOrderedQueryable<T> queryable, Expression<Func<T, Object>> selector, int blockSize = 1000)
Run Code Online (Sandbox Code Playgroud)

对于优化,分页从表中找到的最小值开始,并以最大值结束.由于使用Skip()每月在数据库中有数百万条记录.当你达到表中数百万的数据时,Take()方法会降低到每页13秒左右,然后处理整个月数据可能需要很多小时.

鉴于集合中的记录很少被标记为完整== false,那么只选择记录> = [Page Start] AND <[Page End]可以非常快速地运行,每分钟大约有一百万条记录.在某些情况下,您处理的块数略小于传入的blockSize,但处理了最小值和最大值之间的所有记录.

随着月份的进展,最小值会增加,因此假设0最小浪费很多SQL调用根本没有返回任何内容.

所以我必须得到这些价值观

var min = queryable.Select(selector).DefaultIfEmpty(0).Min();
var max = queryable.Select(selector).DefaultIfEmpty(0).Max();
Run Code Online (Sandbox Code Playgroud)

这产生了看起来像这样的SQL

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
MIN([Join1].[A1]) AS [A1]
FROM ( SELECT 
    CASE WHEN ([Project1].[C1] IS NULL) THEN 0 ELSE [Project1].[PrintSummaryID] END AS [A1]
    FROM   ( SELECT …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda nullable expression-trees

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

如何让ko.computed处理对象内的observable

我有一个相当简单的视图模型来保存数据数组并获取我想用来过滤数据的字符串.

我有一些非常简单的标记来渲染它像这样:

<section class="task-list">
    <ul data-bind="foreach:filteredRecords">
        <li>
            <label>Task name:</label>
            <span data-bind="text:TaskName"></span>              
        </li>
    </ul>
</section>
Run Code Online (Sandbox Code Playgroud)

我按如下方式设置了模型;

var viewModel = {

    searchText : ko.observable(''),
    taskData : ko.observableArray([]),

    searchData : function () {

        // use ko.utils.arrayFilter to limit records by searchText()
        return this.taskData();
    },

    filterRecords: ko.computed(this.searchData, this).extend({ throttle: 500 }),
};

ko.applyBindings(viewModel, $('.task-list')[0]); 
Run Code Online (Sandbox Code Playgroud)

我得到的是

Uncaught Error: Pass a function that returns the value of the ko.computed 
Run Code Online (Sandbox Code Playgroud)

将函数移回ko内部:计算如下:

 filteredRecords: ko.computed(function () {
        return this.taskData();
    },this).extend({ throttle: 500 })
Run Code Online (Sandbox Code Playgroud)

只是给我这个错误:

Uncaught TypeError: Object [object global] …
Run Code Online (Sandbox Code Playgroud)

knockout.js

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

如何使用StructureMap v2.6解析signalR v2.0

在Global.asax的Application_Start中,我有以下内容

 ObjectFactory.Initialize(cfg => {
     cfg.For<IDependencyResolver>().Singleton().Add<StructureMapDependencyResolver>    ();
 });
Run Code Online (Sandbox Code Playgroud)

我的Hub接口是

public interface IDashboardHub
{
    void Initialize();
}
Run Code Online (Sandbox Code Playgroud)

我的中心如下:

public class DashboardHub : Hub, IDashboardHub
{
    private readonly ICpeAccountService _accountService;

    public DashboardHub(ICpeAccountService service)
    {
        _accountService = service;
    }

    [Authorize]
    public void Initialize()
    {
        Clients.All.UpdateStatus("Hello World!!!");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我删除注入的构造函数和解析器,那么我得到"Hello World"信号,JavaScript显示值.如果我只是删除解析器,那么signalR不再找到无参数构造函数,并且不会调用Initialize方法.

如果我包含StructureMap依赖项解析器(它正在工作并立即注入大约40个其他类),那么我得到以下异常消息

StructureMap configuration failures: Error:  104
Source:  Registry:  StructureMap.Configuration.DSL.Registry, StructureMap,
Version=2.6.4.0, Culture=neutral, PublicKeyToken=e60ad81abae3c223
Type Instance '87da3c00-4deb-4334-b189-021d445d95ec' 

(Configured Instance of App.DependencyResolution.StructureMapDependencyResolver, 
    App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)     
    Cannot be plugged into type Microsoft.AspNet.SignalR.IDependencyResolver, 
    Microsoft.AspNet.SignalR.Core, Version=2.0.0.0, Culture=neutral,     
    PublicKeyToken=31bf3856ad364e35 …
Run Code Online (Sandbox Code Playgroud)

c# structuremap dependency-injection asp.net-mvc-4 signalr

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