我在使用sails-filemaker的查找条件或where条件时遇到问题。根据我在sails文档中阅读的内容,我使用的是正确的标准。我正在使用的解决方法是不使用查找或条件,并在查找后删除记录。可以用于很小的记录集,但是并不优雅。
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 ) ;
});
员工模型是
/**
* 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'
}
}
};
如果我用
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 ) ;
});
我得到的所有工作人员的RoleId = 1,而没有任何一个RoleId = 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 ) ;
});
我根本没有员工记录...
什么是将sailCriteria或whereCriteria与sails-filemaker一起使用的正确方法,该方法需要在整个值范围内进行or或search?
我最终使用了文件制作器脚本,将参数传递给该脚本,然后提取了roleId以在文件制作器中执行查找。
var staffCriteria = {
'staff_id_' : '>0',
'-script' : 'find-staff-api-script',
'-script.param' : '{roleId:[1,2]}'
};
Staff.find(staffCriteria).where().exec(function(error,staff){
if ( error ) {
result.error = error ;
result.staffCriteria = staffCriteria ;
}
result.staff = staff ;
return res.send(responseCode, result ) ;
});
有关更多示例,请参见https://gist.github.com/toddgeist/13157485b81f3e2b985e。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句