Ember-data and MongoDB, how to handle _id

后端 未结 9 1960
眼角桃花
眼角桃花 2021-02-08 17:15

I\'m using ember-data with rails and MongoDB and am having problem with the way IDs are stored in MongoDB - in a _id field.

Ember-data will use id as the default field f

相关标签:
9条回答
  • 2021-02-08 17:50

    If you are using Mongoid here is a solution that makes it so you don't have to add a method def id; object._id.to_s; end to every serializer

    Add the following Rails initializer

    Mongoid 3.x

    module Moped
      module BSON
        class ObjectId
          alias :to_json :to_s
          alias :as_json :to_s
        end
      end
    end
    

    Mongoid 4

    module BSON
      class ObjectId
        alias :to_json :to_s
        alias :as_json :to_s
      end
    end
    

    Active Model Serializer for Building

    class BuildingSerializer < ActiveModel::Serializer
      attributes :id, :name
    end
    

    Resulting JSON

    {
      "buildings": [
        {"id":"5338f70741727450f8000000","name":"City Hall"},    
        {"id":"5338f70741727450f8010000","name":"Firestation"}
      ]
    }
    

    This is a monkey patch suggested by brentkirby and updated for Mongoid 4 by arthurnn

    0 讨论(0)
  • 2021-02-08 17:51

    An other way could be to use (if possible for you) the ActiveModel::Serializer. (I think it should be close to rabl (?))

    From the ember-data gihtub: https://github.com/emberjs/data:
    Out of the box support for Rails apps that follow the active_model_serializers gem's conventions

    When we began with ember-data we were crafting as_json(), but using the gem is definitely better :)

    0 讨论(0)
  • 2021-02-08 17:51

    Although the question is quite old but i still think my answer could help others:

    If you are using ActiveModelSerializer then you just need to do this :

    class UserSerializer < ActiveModel::Serializer
         attributes :id , :name
    end
    

    It works all fine. I am using emberjs on the front end btw.

    0 讨论(0)
提交回复
热议问题