2014-10-07 3 views
3

TL - 돛 프로젝트에서 과도한 작업 내에서 워터 라인 모델을 사용하려면 어떻게해야합니까?쓸데없는 작업에서 워터 라인 모델에 액세스하려면 어떻게해야합니까?

CSV 파일을 처리하고 데이터를 Postgres 데이터베이스에 삽입하기 위해 Sails 프로젝트에서 간단한 작업을 만들려고합니다. 나는 이것을 위해 Waterline을 사용하기를 희망했지만 데이터베이스에 연결하는 데는 실패했다.

궁금한 점은 내가 쓸데없는 일에서 워터 라인 모델을 어떻게 사용하겠습니까?

나는 이해에 매우 관심이있을지라도, 내 모델을 접근 가능하게 만들기 위해 Sails가 장면 뒤에 무엇을하는지 지나치게 확신하지는 않습니다.

나는 아침에 내가 시도한 예제 코드로 업데이트 할 것이다.

+1

처럼 그 일을 멀리 얻을 수 있습니다, 그것은 전문 용어 - 수프 같다. 돛, 그란트, 워터 라인, 응? 코드 및 오류가 없으면 내가 사용하고있는 도구에 대한 단서를 가지고 있더라도 유용하게 응답 할 수 없습니다. –

+0

Grunt는 Rake처럼 작업 주자입니다. Sails 서버를 실행할 때 Sails CLI는 Waterline 모델을 등록하고 전역 적으로 액세스 할 수있게합니다. 나는 돛이 장면 뒤에서 무엇을하고 있는지 알지 못하기 때문에 수포로 돌아가는 작업에서 Postgres와 상호 작용하기 위해 워터 라인 모델을 사용하고 싶습니다. 질문에 대해 이야기하고있는 도구를 이해하면 상당히 간단합니다. 돛 프로젝트에서 과도한 작업 내에서 워터 라인 모델을 사용하려면 어떻게해야합니까? 이제 코드 예제를 추가 할 것입니다. – Dawson

+1

설명해 주셔서 감사합니다. 나는 아무것도를 요구하는 것보다 더 당황하게 표현하고 있었다. Node와 Rails 커뮤니티는 모두 놀랄만 한 속도로 새로운 도구 (비밀스런 이름 포함)를 생성합니다. –

답변

3

내가 잘못 가져 왔습니다. 제대로 다음 작품 :


var CWD = process.cwd(); 
var path = require('path'); 

var Waterline = require('waterline'); 
var User = Waterline.Collection.extend(require(path.join(CWD, 'api/models/User'))); 

module.exports = function (grunt) { 
    grunt.registerTask('seedDb', 'Given a list of addresses, assign long and lat.', function (clinicCsv, outputCsv) { 
     // tell grunt this task is async 
     var done = this.async(); 

     // create ORM 
     var orm = new Waterline(); 
     orm.loadCollection(User); 

     // initialize ORM 
     orm.initialize({ 
      adapters: { 
       'sails-postgresql': require('sails-postgresql') 
      }, 
      connections: require(path.join(CWD, 'config/connections')).connections, 
      defaults: require(path.join(CWD, 'config/models')).models 
     }, function (err, ontology) { 
      if (err) throw err; 

      console.log(ontology.collections); 
      done(); 
     }); 
    }); 
}; 

API/모델/사용자는 다음과 같습니다


module.exports = { 
    identity: 'User', 
    connection: 'localPostgresqlServer', 

    attributes: { 
    firstName: { 
     type: 'string' 
    }, 
    lastName: { 
     type: 'sting' 
    }, 
    email: { 
     type: 'email' 
    }, 
    password: { 
     type: 'string' 
    } 
    } 
}; 

및 구성/연결 및 설정은/모델은 표준 항해 형식입니다. 열쇠는 모델 내에서 연결을 지정하는 것이 었습니다.

1

또한 PostgreSQL의 배경에서이 오는이

grunt.registerTask('seedDb', 'Given a list of addresses, assign long and lat.', function (clinicCsv, outputCsv) { 
    // tell grunt this task is async 
    var done = this.async(); 

    require('sails').load({ 
     hooks: { 
      blueprints: false, 
      controllers: false, 
      cors: false, 
      csrf: false, 
      grunt: false, 
      i18n: false, 
      logger: false, 
      policies: false, 
      pubsub: false, 
      request: false, 
      responses: false, 
      session: false, 
      socket: false, 
      views: false 
     } 
    }, function(err, app){ 
     // access to models, do your magic here 

     done(); 
    }); 
});