2016-06-29 2 views
1

Wakanda 프로젝트를 작성하는 데 초보자입니다. 여러 dataClasses가있는 dataModel을 성공적으로 만들었으므로 SQL, JSON 또는 CSV 덤프 파일을 사용하여 생성 된 더미 데이터로이 dataClasses를 채우고 싶습니다.Wakanda DataSource에 더미 데이터를 업로드하는 방법

내가 맞다고 생각하면 JSON 형식의 데이터 파일을 사용하고이 더미 데이터를 dataModel에 업로드하는 것이 가장 좋습니다. 나는 이것을 가능하게하기 위해 Wakanda Studio 내의 어느 곳이라도 찾을 수 없었습니다. 누군가가 더미 데이터의 1000+ 레코드를 채우는 최선의 방법을 말해 줄 수 있습니까?

미리 감사드립니다.

답변

3

importFromJSON() 방법은 exportAsJSON() 방법을 보완합니다.

JSON이 Wakanda의 exportAsJSON 메서드가 아닌 다른 메서드에서 들어오는 경우 몇 가지 레코드를 만든 다음 exportAsJSON을 실행하여 Wakanda의 예상 형식을 확인할 수 있습니다. importFromJSON과 함께 사용하기 전에 JSON이 동일한 형식인지 확인하십시오.

+0

감사합니다, 나는 importFromJSON에게 나는이 시도 줄 것이다 – Darrellh

4

나는 일반적으로 CSV 또는 importFromJSON JSON 와 파일을 구문 분석 할 때 간단한 loadText 기능을 사용하여 내 데이터베이스를 채우는 것을 좋아합니다.

  1. 먼저 서버 측 프로젝트의 어느 곳에서나 .js 파일을 만들어야합니다. backenddatabase 폴더는 서버 쪽으로 간주됩니다.
  2. 작업을 스크립트해야합니다. example here을 볼 수 있습니다. CSV 파일을 구문 분석하는 경우 loadText('/path/to/file.csv').split("\n")을 사용하고 그렇지 않은 경우 JSON 파일에 importFromJSON을 사용하십시오.
  3. 코드 편집기의 도구 모음에있는 화살표 단추로 스크립트를 실행하십시오.

출력은 코드 편집기의 맨 아래에있는 콘솔에 표시됩니다.

+0

감사를 사용하려고 볼 거라 생각 했어요. – Darrellh

0

내가하는 일은 프로젝트 레벨에서 만든 파일 .js입니다. 그 파일 안에는 아래의 jsfiddle에있는 코드가 있습니다. 솔루션이 실행 중일 때 편집기 창 위의 "재생"버튼을 눌러 스크립트를 실행할 수 있음을 알 수 있습니다.

는 데이터 저장소 클래스에 대한 액세스는 여전히 validate() 또는 restrict() 또는 save() 당신이 당신의 데이터를 보호/액세스를 제한하는 데이터 저장소 클래스에 설정 한 이벤트 등 어떠한 영향을받습니다주의하십시오. 이러한 제한 사항이 귀하의 경우에 발생한다면 promoteWith()unPromote()을 확인하십시오.

내 스크립트는 프로젝트 레벨의 Backups 폴더에서 쉼표로 구분 된 CSV를로드합니다. 만약 당신이 좋아하면, 나는이에 확장 할 수 있습니다

https://jsfiddle.net/kgwd1kek/

, 나는 희망이 도움이 : 난 당신이 볼 수 있도록 여기에 자바 스크립트를 넣어.

또한 솔루션의 첫 번째/유일한 것 이외의 프로젝트를 언급하는 경우 2 행에서 배열 색인을 변경해야합니다.

대신에 루프를 넣어서 레코드를 만들고 저장하는 1-100에서 실행되는 .js 파일에 넣을 수 있습니다. 나는 이것을 수행하고 심지어 임의의 데이터로 레코드를 생성하기 위해 Math.random()function I picked up from MDN을 사용한다. 문자열 데이터 나 부울 값이있는 경우에도 난수와 숫자가 switch()이고 저장하기 전에 많은 미리 결정된 문자열 값 중 하나를 엔터티에 추가합니다. 그것은 나를위한 훌륭한 테스트 솔루션입니다.

1

다음은 JSON 객체에서 가져 오기를 수행하는 방법입니다.

관계에 따라 올바른 순서로 데이터를 가져 오는 것을 숙지해야합니다. 예를 들어, 회사가 아직 존재하지 않기 때문에 먼저 직원을 가져 와서 회사를 할당 할 수 없습니다. 올바른 주문은 회사를 가져온 다음 직원을 가져 와서 회사를 연결하는 것입니다.

/** 
* Example Data 
*/ 

var hireDate = new Date('2012',7,13,1,0,0), 
    companies = [{name:'Company 1'},{name:'Company 2'},{name:'Company 3'}], 

    employees = [{firstName:'John',lastName:'Doe',company:'Company 1',hireDate:hireDate,salary:2000}, 
        {firstName:'Frederic',lastName:'Smith',company:'Company 2',hireDate:hireDate,salary:2000}, 
        {firstName:'John',lastName:'Doe',company:'Company 3',hireDate:hireDate,salary:3000}, 
        {firstName:'Marc',lastName:'Petit',company:'Company 2',hireDate:hireDate,salary:5000}, 
        {firstName:'Arthur',lastName:'Johns',company:'Company 3',hireDate:hireDate,salary:2500}, 
        {firstName:'Mike',lastName:'Sina',company:'Company 3',hireDate:hireDate,salary:2900}, 
        {firstName:'Jack',lastName:'Taylor',company:'Company 1',hireDate:hireDate,salary:7800}, 
        {firstName:'Simon',lastName:'Portmann',company:'Company 2',hireDate:hireDate,salary:4700}], 

    newCompany,newEmployee; 

companies.forEach(function(company){ 
    newCompany = new ds.Company(company); 
    newCompany.save(); 
}); 

employees.forEach(function(employee){ 
    newEmployee = new ds.Employee(employee); 
    newEmployee.company = ds.Company.find('name == :1',employee.company) 
    newEmployee.save(); 
}); 

ds.Employee.all() 

속성 이름이 dataClass와 동일한 경우 생성시 개체를 할당하면됩니다. 당신이 그런 특별한 규정이있는 경우 또는 당신은 속성을 조작 할 수 있습니다 :

employees.forEach(function(employee){ 
    newEmployee = new ds.Employee(); 
    // Example how to assign value to an attribute on the import 
    // newEmployee is the new employee created in the dataStore of Wakanda. 
    // employee is the employee which come from the JSON object. 
    // Maybe the imported data have different attribute names. 
    newEmployee.firstName = employee.name; 
    newEmployee.lastName = employee.lname; 
    newEmployee.birthDate = new Date(employee.datestamp); 
    newEmployee.company = ds.Company.find('name == :1',employee.company) 
    newEmployee.save(); 
});