小编Se7*_*ays的帖子

Mongoose:在一次调用中填充多个查询

在Mongoose中,我可以使用查询填充来在查询后填充其他字段.我也可以填充多个路径,例如

Person.find({})
 .populate('books movie', 'title pages director')
 .exec()
Run Code Online (Sandbox Code Playgroud)

然而,这将在书籍上产生查询,收集标题,页面和导演的字段 - 以及查看收集标题,页面和导演字段的电影.我想要的只是从书本中获取标题和页面,从电影中获取导演.我可以这样做:

Person.find({})
 .populate('books', 'title pages')
 .populate('movie', 'director')
 .exec()
Run Code Online (Sandbox Code Playgroud)

这给了我预期的结果和查询.

但有没有办法让第二个片段的行为使用类似"单行"的语法,如第一个片段?原因是,我想以编程方式确定populate函数的参数并将其输入.我不能为多个填充调用执行此操作.

javascript mongoose

61
推荐指数
3
解决办法
3万
查看次数

如何从Swift中的Mirror子类中提取可选的类型值?

我有几个类似于以下类似的快速类

public class Book {
  var title: String?
  var date: NSDate?
}
Run Code Online (Sandbox Code Playgroud)

由于我需要访问属性的几个不同的类,我使用反射来运行类的属性:

let myBook = Book()
myBook.title = "Hello"
myBook.date = NSDate()

let mirror = Mirror(reflecting: myBook)
var propsArr = [(key: String?, value: Any)]()
let mirrorChildrenCollection = AnyRandomAccessCollection(mirror.children)!
if mirrorChildrenCollection.count > 0 {
  propsArr += mirrorChildrenCollection
}

//iterate through properties
for case let (label?, value) in propsArr {
  print (label, value)

  if let val = value as? NSDate {
    var extractedDate = val
    print(extractedDate)
  }
  else if let val …
Run Code Online (Sandbox Code Playgroud)

reflection mirror swift

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

微服务架构中的搜索查询

假设我有一个微服务架构,其中我有一个 Book 微服务保存所有书籍详细信息,一个 Author 微服务保存所有作者详细信息,例如

Book Service
GET /     get all books
GET /id   get book details, including author_ids
POST /    create new book
etc.

Author Service
GET /     get all authors
GET /id   get author details, including book_ids
POST /    create new author
etc.
Run Code Online (Sandbox Code Playgroud)

真正的服务是企业级的,我只是选择 Books 和 Authors 及其自己的数据存储选项作为一个易于理解的示例。

假设会有数百万个服务调用,我必须维护系统的特定可用性和吞吐量。如何有效地搜索名称以“A”开头的作者以及作者所写的所有书名以“B”开头的书籍?

我看到以下选项,但都不完美:

  1. 我在 Author 服务中创建了一个搜索端点,获取所有符合搜索条件的作者,跟踪每个 book_id 并过滤书籍。-> 这需要对 Book 服务进行大量调用。

  2. 同 1. 但我在 Book 服务中创建了一个搜索端点,获取所有符合搜索条件的书籍,按照每个 author_id 并过滤作者。-> 这需要对 Author 服务进行大量调用。在最坏的情况下,与 1 中的负载相同。

  3. 我创建了一个新的微服务搜索。搜索将拥有自己的数据库,该数据库针对搜索进行了优化。搜索将返回我的书籍和作者,并且可以一通电话给我搜索结果。-> 这需要 Search 经常与 Book 和 Author 服务同步。 …

architecture microservices

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

使用performSelector:访问BOOL属性

我正在使用performSelector:,它返回一个id对象,以调用其他几个方法.这些方法的返回类型实际上可以是某个BOOL,int,NSDate或任何其他类型的对象.

我如何判断返回的对象是否performSelector:BOOL?我尝试将其转换为NSNumber等等,但如果对象不是a,则会崩溃BOOL.

我有一个具有以下属性的类:

@property(retain,nonatomic) NSString* A;
@property(assign,nonatomic) BOOL B;
@property(retain,nonatomic) NSArray* C;
@property(assign,nonatomic) int64_t D;
Run Code Online (Sandbox Code Playgroud)

这个类是由框架生成的,所以我无法改变它.但是,我要循环A,B,C,D调用每个属性和检索数据.但是,正如您所看到的,返回类型可能会有所不同,我需要调整它.

我正在做类似的事情:

SEL s = NSSelectorFromString(@"A");
id obj = [object performSelector:s];
//check if obj is BOOL
//do something with obj
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c declared-property

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