2016-09-21 4 views
0

sails-filemaker에서 find 기준 또는 where 기준을 사용하는 데 문제가 있습니다. 돛 문서에서 읽은 바에 따르면 올바른 기준을 사용하고 있습니다. 내가 사용하고있는 작업은 찾기 또는 위치 기준을 사용하지 않고 찾기 후에 레코드를 제거하는 것입니다. 아주 작은 레코드 세트는 좋지만 우아한 것은 아닙니다.sails-filemaker를 사용하여 레코드 범위를 찾는 방법은 무엇입니까?

var staffCriteriaFind = {roleId:[1,2]} ; 
var staffCriteriaWhere = {or:[{roleID:1},{roleId:2}]} ; 

Staff.find().where().exec(function(error,staff){ 
    /* remove staff members who are not account managers or artists */ 
    for (index = staff.length-1; index > 0; index--) { 
     var staffMember = staff[index]; 
     if (staffCriteriaFind.roleId.indexOf(staffMember.roleId) == -1) { 
      staff.splice([index],1) ; 
     } 
    } 
    result.staff = staff ; 
    return res.send(responseCode, result) ;  
}); 

직원 모델은 내가

var staffCriteriaFind = {roleId:[1,2]} ; 
var staffCriteriaWhere = {or:[{roleID:1},{roleId:2}]} ; 

Staff.find(staffCriteriaFind).where().exec(function(error,staff){ 
    result.staff = staff ; 
    return res.send(responseCode, result) ;  
}); 

내가 역할 ID = 1 모든 직원을 얻을 사용하는 경우

/** 
* Staff.js 
* 
* @description :: Staff employed by the business 
* @docs  :: http://sailsjs.org/#!documentation/models 
*/ 

module.exports = { 

    connection: 'filemaker', 
    tableName: 'staff-list-api-layout', 

    autoPK:false , 
    autoCreatedAt: false , 
    autoUpdatedAt: false , 

    attributes: { 
     id: { 
      columnName: 'staff_id_', 
      type: 'integer', 
      primaryKey: true, 
      unique:true 
     } , 
     role:{ 
      columnName:'staff_role::role', 
      type: 'string' 
     }, 
     timesheetSort:{ 
      columnName:'staff_role::timesheet_sort', 
      type:'string' 
     }, 
     roleId:{ 
      columnName: 'role_id', 
      type: 'integer', 
      foreignKey: true 
     }, 
     name:{ 
      columnName:'full_name', 
      type: 'string' 
     }, 
     createdAt:{ 
      type:'date' 
     }, 
     updatedAt:{ 
      type:'date' 
     } 
    } 

}; 

없고 역할 ID = 2

와 아무도 내가 만약 사용

var staffCriteriaFind = {roleId:[1,2]} ; 
var staffCriteriaWhere = {or:[{roleID:1},{roleId:2}]} ; 

Staff.find().where(staffCriteriaWhere).exec(function(error,staff){ 
    result.staff = staff ; 
    return res.send(responseCode, result) ;  
}); 

나는

는 OR 값의 범위를 검색이 필요 돛-FILEMAKER와 findCriteria 또는 whereCriteria를 사용하는 올바른 방법은 무엇입니까 ... 전혀 직원 기록을 얻을?

답변

1
내가 그 스크립트의 매개 변수에 전달 된 FILEMAKER 스크립트를 사용하여 종료 후 추출

역할 ID의 검색 (find)를 실행하려면 대신 파일 메이커에서 더 많은 예제는 https://gist.github.com/toddgeist/13157485b81f3e2b985e을 참조하십시오.

0

토드 Geist는 요청하는 가장 좋은 사람이 될 것입니다,하지만 난 그게 한 번에 하나 개의 매개 변수를 찾을 수 있도록 Staff.find은 아마

는 파일 메이커가 기능을 찾기 사용 추측 시도 할 수 있습니다. 대신 {roleId : [2,1]}을 (를) 사용하려고하면 아마도 모든 roleId = 1을 얻게됩니다.

문제는 find()를 찾을 수 없다는 것입니다. sales-filemaker의 어느 위치에서든지. 당신이 newFindRequest (fmLayout, options.where)를보고 있다고 생각합니다.이 곳은 메소드가 아니라 매개 변수입니다.

해보십시오 staff.find (staffCriteriaWhere)이 작동 할 수

+0

staff.find (staffCriteriaWhere가) 실패했습니다. 나는 대본을 사용하여 끝내었다. –

0

내 나쁜 돛 방법이 아닌 판매 - FILEMAKER입니다 .

난 당신이 시도해야한다고 생각 :

Staff.find().where({roleId:1 },{roleId:2 }) 

또는

Staff.find().where({roleId:1 }).where({roleId:2 }) 
+0

감사합니다. Nicolai. 그건 실패했지만 당신의 통찰력에 감사드립니다. –

1

많은 문제가 있었지만 find 함수에서 Filemakers 범위 용어 '...'를 사용할 수 있음을 발견했습니다.

staff.find({ a_StaffID: '1...12', position: '100...400' }) 
 
.then('do whatever you need to do with the returned data') 
 
.catch('do whatever you need to do with any error')