Method: Spider::Model::Storage::Document::Mongodb::MapperExtension#postprocess_result

Defined in:
lib/spiderfw/model/storage/document/adapters/mongodb.rb

#postprocess_result(h, model = nil) ⇒ Object



275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
# File 'lib/spiderfw/model/storage/document/adapters/mongodb.rb', line 275

def postprocess_result(h, model=nil)
    model ||= @model
    sh = {}
    h.each do |k, v|
        if k == :_id
            pks = model.split_keys_string(v)
            model.primary_keys.each_with_index do |pk, i|
                pkval = pks[i]
                pkval = storage_value_to_mapper(pk.type, pkval)
                sh[pk.name] = pks[i]
            end
        else
            el = model.elements[k]
            v = if v.is_a?(Hash)
                postprocess_result(v, el.model)
            elsif v.is_a?(Array)
                v.map{ |row| postprocess_result(row, el.model) }
            else
                v
            end
            sh[k] = v
        end
    end
    sh
end