2013-06-27 2 views
7

제목에서 알 수 있듯이. 몽고이드 3과 관련된 것을 찾을 수 없습니다. 내가 발견 한 것들은 의 이전 버전에만 적용되며 Moped을 사용하지 않았습니다. Mongoid를 사용하여 mongodb에 함수 저장 3

나는이를 발견하고는 작동하지 않습니다

def self.install_javascript 
    getWeekJs = Rails.root.join("lib/javascript/getWeek.js") 
    if collection.master['system.js'].find_one({'_id' => "getWeek"}).nil? 
    collection.master.db.add_stored_function("getWeek", File.new(getWeekJs).read) 
    end 
end 

이 방법은 system.js 컬렉션에 getWeek 기능을 추가합니다.

어떻게 이것을 몽고이 3에서 할 수 있습니까?

답변

5

Nailed it!

코드 :

class StoredProcedure 
    include Mongoid::Document 
    store_in collection: "system.js" 

    field :_id, type: String, default: "" 

    def self.test 
    equalsJS = Rails.root.join("lib/assets/javascripts/equals.js") 
    code = Moped::BSON::Code.new(File.new(equalsJS).read) 
    unless where(id: "equals").first 
     proc = new(value: code) 
     proc._id = "equals" 
     proc.save 
    end 
    end 
end 

설명 : 그것은 보통 징수 것처럼 내가 mongoidsystem.js을 사용하고

. 나는 단순히 새로운 문서를 추가하는 것이다. 중요

:

값은 Moped::BSON::Code 예 그렇지 않으면, 문자열로 저장됩니다 따라서 쓸모가있을 필요가있다. id는 함수의 이름이어야합니다. create 문에서 id를 지정할 수 없으므로 여러 단계를 추가했습니다.

배포 후 모든 필수 기능을 mongo에 추가하기 위해이를 레이크 작업에 추가하십시오.

+1

저장된 자바 스크립트를 실제로 실행할 수있는 방법을 찾았습니까? –