该型号如下:
car
- id(number),brand(String),model(String),color(String)
bookingCar
- id (number),carId (number),startDate(date),endDate(date),location(string),carType(Sring)
关系:
car has many bookingCar (foreign key: carId)
bookingCar belongs to car (foreign key: carId)
现在,我想根据未在选定的日期时期和地点,carType预订过滤来自car
模型数据。
所以我指远程梅索德和我用lb remote-methode
。在此基础上链接enter link description here我写了一个方法
'use strict';
module.exports = function(Bookingcar) {
var BookingCar = require('./booking-car.json');
BookingCar.findCar = function(location, startDate, endDate, carType, callback) {
var results;
// TODO
const d1 = startDate.split("-");
const d2 = endDate.split("-");
var c = dateCheck.split("-");
var from = new Date(d1[2], parseInt(d1[1])-1, d1[0]);
var to = new Date(d2[2], parseInt(d2[1])-1, d2[0]);
var check = new Date(c[2], parseInt(c[1])-1, c[0]);
if((check <= to && check >= from)){
var filter = { include: [
'brand',
'model',
'color',
'carType',
'revenue_li_cpy',
'revenue_li_ex_date',
'ins_cpy',
'ins_cpy',
'ins_exp_date',
'car_photo',
'ownerNICId_companyName'],
fields: [
'id','brand',
'model',
'color',
'carType',
'revenue_li_cpy',
'revenue_li_ex_date',
'ins_cpy',
'ins_cpy',
'ins_exp_date',
'car_photo',
'ownerNICId_companyName'], where: { and: [{ location: location }, { carType: carType },{ startDate: d1 },{ endDate: d2 }, { status: 1 }] } };
}
Bookingcar.find(location, startDate, endDate, carType, {
include: [{
relation: 'car'}
]},
function(err, results) {
if (err)
console.log(err);
else {
callback(null, results);
}
});
};
Bookingcar.remoteMethod(
'findCar', {
http: {path: '/findCar', verb: 'get'},
accepts: [
{arg: 'location', type: 'string'},
{arg: 'startDate', type: 'date'},
{arg: 'endDate', type: 'date'},
{arg: 'carType', type: 'string'}
],
returns: [
{ arg: 'id', type: 'number', description: 'id', required: true, root: true },
{ arg: 'brand', type: 'string', required: true, root: true },
{ arg: 'model', type: 'string', required: false, root: true },
{ arg: 'color', type: 'string', required: true, root: true },
{ arg: 'carType', type: 'string', required: false, root: true },
{ arg: 'regiNo', type: 'string', required: true, root: true },
{ arg: 'revenue_li_cpy', type: 'string', required: false, root: true },
{ arg: 'revenue_li_ex_date', type: 'date', required: true, root: true },
{ arg: 'ins_cpy', type: 'string', required: false, root: true },
{ arg: 'ins_cpy', type: 'string', required: true, root: true },
{ arg: 'ins_exp_date', type: 'date', required: false, root: true },
{ arg: 'car_photo', type: 'string', required: true, root: true },
{ arg: 'ownerNICId_companyName', type: 'string', required: false, root: true },
]
}
);
};
但它的工作,我有暧昧,这是否BookingCar.findCar = function(location, startDate, endDate, carType, callback)
是赖特还是错。因为他所引用仅适用于一个参数..
请给一个想法或暗示来解决我的问题
这是基于你的代码远程方法的一个例子:
'use strict';
module.exports = function(Bookingcar) {
BookingCar.findCar = function(location, carType) {
return new Promise((resolve, reject) => {
const filter = {
include: ['car'], // Include the car relation
where: {
and: [
{location: location},
{carType: carType},
or: [
{startDate: {gt: Date.now()}},
{endDate: {lt: Date.now()}}
]
]
}
};
Bookincar.find(filter, (err, results) => {
if (err) return reject(err);
// you can add more logic on the results here if needed
resolve(results);
});
});
});
Bookingcar.remoteMethod(
'findCar', {
http: {path: '/findCar', verb: 'get'},
accepts: [
{arg: 'location', type: 'string', required: true},
{arg: 'carType', type: 'string', required: true}
],
returns: {arg: 'cars', type: 'array'}=
}
);
我已经建立了过滤装置:给我匹配的所有值
该startDate
和endDate
参数是没有必要的,因为你要比较包括在与Bookingcar
的now()
情况的人。
最后,结果将是实例的数组(对象的阵列上),不必详细的是,在远程方法定义的返回值。
但是,基本上,在这里,你并不需要建立一个远程方法。你可以简单地查询回环此过滤器,因为有远程方法里面没有具体的逻辑。