Sails.js 如何使用sails filemaker查找一系列记录?
我在使用sails filemaker的查找条件或where条件时遇到问题。根据我在sails文档中阅读的内容,我使用的是正确的标准。我正在使用的解决方法是不使用查找或where条件,并在查找后删除记录。非常小的唱片集也可以,但它并不优雅Sails.js 如何使用sails filemaker查找一系列记录?,sails.js,filemaker,Sails.js,Filemaker,我在使用sails filemaker的查找条件或where条件时遇到问题。根据我在sails文档中阅读的内容,我使用的是正确的标准。我正在使用的解决方法是不使用查找或where条件,并在查找后删除记录。非常小的唱片集也可以,但它并不优雅 var staffCriteriaFind = {roleId:[1,2]} ; var staffCriteriaWhere = {or:[{roleID:1},{roleId:2}]} ; Staff.find().where().exec(functi
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 ) ;
});
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 ) ;
});
我得到roleId=1的所有员工,roleId=2的员工都没有
如果我使用
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 ) ;
});
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 ) ;
});
我根本没有员工记录
使用findCriteria或whereCriteria与sails filemaker的正确方法是什么,其中需要跨一系列值进行or搜索?托德·盖斯特(Todd Geist)是最好的提问者,但我可以试着猜测 您的Staff.find可能使用FileMaker查找功能,因此一次只能查找一个参数。尝试使用{roleId:[2,1]},您可能会得到所有roleId=1 问题是,我在sales filemaker中的任何位置都找不到find()。我认为您正在查看newFindRequest(fmLayout,options.where),其中它是一个参数,而不是方法
试试staff.find(staffCriteriaWhere),这可能行得通托德·盖斯特(Todd Geist)是最好的提问者,但我可以试着猜测 您的Staff.find可能使用FileMaker查找功能,因此一次只能查找一个参数。尝试使用{roleId:[2,1]},您可能会得到所有roleId=1 问题是,我在sales filemaker中的任何位置都找不到find()。我认为您正在查看newFindRequest(fmLayout,options.where),其中它是一个参数,而不是方法
试试staff.find(staffCriteriaWhere),这可能会起作用,我的坏,其中是sails方法,而不是sales filemaker 我想你应该试试这个:
Staff.find().where({roleId:1 },{roleId:2 })
或
我的坏,其中是sails方法,而不是销售文件制造商 我想你应该试试这个:
Staff.find().where({roleId:1 },{roleId:2 })
或
最后,我使用了一个filemaker脚本,将参数传递给该脚本,然后提取roleId以在filemaker中执行查找
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 ) ;
});
有关更多示例,请参见。我最终使用了一个filemaker脚本,将参数传递给该脚本,然后提取roleId以在filemaker中执行查找
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 ) ;
});
有关更多示例,请参阅。经过多次尝试,我发现您可以在find函数中使用Filemakers范围术语“…”
staff.find({a_StaffID:'1…12',position:'100…400'})
.then('对返回的数据执行任何需要执行的操作')
.catch('do any you need to do any error')
经过多次尝试,我发现您可以在find函数中使用Filemakers范围术语“…”
staff.find({a_StaffID:'1…12',position:'100…400'})
.then('对返回的数据执行任何需要执行的操作')
.catch('处理任何错误都可以')
谢谢Nicolai。这不起作用,但我很欣赏你的洞察力。谢谢尼科莱。这失败了,但我感谢你的洞察力。staff.find(staffCriteriaWhere)失败了。我最终使用了一个script.staff.find(staffCriteriaWhere)失败。我最终使用了一个脚本。