2016-09-10 14 views
1

私はこの基本的に "CA:FA"で始まる "basicConstraints"フィールドのドキュメントを返すrethinkDBクエリを持っています。Pythonラムダを使用しているときに欠落フィールドを処理する

しかし、私の文書の中には、 "basicConstraints"フィールドが存在しません。

q = r.db('scanafi').table(active_table) \ 
.concat_map(lambda doc: doc["certificates"]\ 
.concat_map(lambda x: x["parsed_certificate"]["X509 extensions"])\ 
    .filter(lambda x: x["basicConstraints"] 
.match("^CA:FA"))) \ 
.run() 

この欠落したフィールドを含むすべてのドキュメントをクエリに含めるにはどうすればよいですか?

答えて

0

あなたのxには、通常のpython dict(私はrethinkdbに慣れていない)のようなメソッドはありません。あなただけの句を除いて/試してみると、ここでの本当の機能を使用することができます:あなたはx.has_fields('basicConstraints').not().or_(x['basicConstraints'].match("^CA:FA"))を書くことができます

def basic_constraints(x): 
    try: 
     return x["basicConstraints"] 
    except: # find out what the actual exception is and put that here 
     return True 

q = r.db('scanafi').table(active_table) \ 
.concat_map(lambda doc: doc["certificates"]\ 
.concat_map(lambda x: x["parsed_certificate"]["X509 extensions"])\ 
    .filter(basic_constraints) 
.match("^CA:FA"))) \ 
.run()## Heading ## 
+0

迅速な対応に感謝します。だから私はそれを試みたが、それは次のエラーをスローします: '.filter(lambda x:x [" basicConstraints "] xのBasicConstraintsがTrueの場合 TypeError: 'Var'型の引数がiterableではない' – user1513388

関連する問題