在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函数的参数并将其输入.我不能为多个填充调用执行此操作.
我有几个类似于以下类似的快速类
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) 假设我有一个微服务架构,其中我有一个 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”开头的书籍?
我看到以下选项,但都不完美:
我在 Author 服务中创建了一个搜索端点,获取所有符合搜索条件的作者,跟踪每个 book_id 并过滤书籍。-> 这需要对 Book 服务进行大量调用。
同 1. 但我在 Book 服务中创建了一个搜索端点,获取所有符合搜索条件的书籍,按照每个 author_id 并过滤作者。-> 这需要对 Author 服务进行大量调用。在最坏的情况下,与 1 中的负载相同。
我创建了一个新的微服务搜索。搜索将拥有自己的数据库,该数据库针对搜索进行了优化。搜索将返回我的书籍和作者,并且可以一通电话给我搜索结果。-> 这需要 Search 经常与 Book 和 Author 服务同步。 …
我正在使用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) architecture ×1
cocoa ×1
javascript ×1
mirror ×1
mongoose ×1
objective-c ×1
reflection ×1
swift ×1