以下是通过过滤和分页,创建和多次创建来获取所有内容的服务
async function MultipleCreate(customerList, tenantId) {
try {
if (customerList == null || customerList.length == 0) {
return { isSuccess: false, message: 'Cusotmer Data is empty!!', data: customerList };
}
var roleId = '';
var role = await Role.findOne({ name: "customer" });
if (role) {
roleId = role.id;
}
var customerArrayData = [];
for (let customerElement of customerList) {
var createResult = {};
customerElement.role = roleId;
var customerCreate = await Create(customerElement, tenantId);
if (customerCreate.isSuccess) {
createResult.isSuccess = customerCreate.isSuccess;
createResult.data = customerCreate.data;
createResult.message = customerElement.fullName + " Created..";
} else {
createResult.isSuccess = customerCreate.isSuccess;
createResult.data = customerCreate.data;
createResult.message = customerElement.fullName + " Created failed..";
}
customerArrayData.push(createResult);
}
return { isSuccess: true, message: '', data: customerArrayData }
}
catch (ex) {
return { isSuccess: false, message: 'Failed to Create Customer!!', data: ex };
}
}
async function Create(customer, tenantId) {
try {
const customerModel = new Customer(customer);
customerModel._id = new mongoose.Types.ObjectId();
customerModel.fullName = customer.firstName + ' ' + customer.lastName;
customerModel.companyName = customer.companyName;
customerModel.tenantId = tenantId; // Assign tenant Id from header
customerModel.userType = 'customer';
customerModel.createdDate = moment.utc();
try {
var isValidRoleId = mongoose.Types.ObjectId.isValid(customerModel.role);
if (!isValidRoleId) {
var role = await Role.findOne({ name: "customer" });
if (role) {
customerModel.role = role._id;
}
}
//Generate the Password
var genPWD = pwd.generateAndHashPassword();
customerModel.salt = genPWD.salt;
customerModel.password = genPWD.hash;
// Form Email Object to send Email
var customerResponse = await customerModel.save()
.then(doc => {
var sendEmailObj = {
username: customerModel.email,
name: customerModel.fullName,
password: genPWD.password
};
// implement Email when register
var emailRes = EmailHelper.welcomeEmail(sendEmailObj);
return { isSuccess: true, message: 'Customer Created Successfully!!', data: doc }
}).catch(err => {
return { isSuccess: false, message: 'Failed to Create Customer!!', data: err }
});
return customerResponse;
} catch (err) {
console.log("err", err)
return { isSuccess: false, data: { code: err.code, errmsg: err.code == 11000 ? "Email Already Exists" : err.errmsg }, message: '' };
}
}
catch (ex) {
return { isSuccess: false, message: 'Failed to Create Customer!!', data: ex };
}
}
async function GetAll(req) {
let tenantId = req.header('x-tenant-id');
try {
let pageSize = 10;
if (req.query.pageSize) {
pageSize = parseInt(req.query.pageSize);
}
let pageNumber = req.query.pageNumber > 1 ? req.query.pageNumber : 1;
let skip = pageSize * pageNumber - pageSize;
let filter = {};
let sorting = {};
if (req.query.companyName) filter.companyName = { $regex: '.*' + req.query.companyName + '.*', $options: 'i' };;
filter.tenantId = tenantId;
filter.isDeleted = false;
if (req.query.sortBy && req.query.orderBy) {
let sortByList = req.query.sortBy.split(",");
let orderByList = req.query.orderBy.split(",");
for (let i = 0; i < sortByList.length; i++) {
let sortField = sortByList[i];
sorting[sortField] = orderByList[i] === "desc" ? -1 : 1;
}
}
var count = await Customer.where(filter)
.count()
.then(res => {
return { isSuccess: true, data: res };
});
var response = await Customer.find()
.where(filter)
.skip(skip)
.limit(pageSize)
.sort(sorting)
.then(res => {
return {
isSuccess: true,
message: 'Customer List!!',
data: res,
currentPage: pageNumber,
pageSize: pageSize,
totalRecords: count.data
};
}).catch(err => {
return {
isSuccess: false,
message: 'Failed to Get Custom List!!',
data: err,
currentPage: pageNumber,
pageSize: pageSize,
totalRecords: 0
};
});
return response;
} catch (error) {
return {
isSuccess: false,
message: 'Failed to Get Customer List!!',
data: error,
currentPage: 0,
pageSize: 0,
totalRecords: 0
};
}
}
Success response with created Data screenshot
Callback get service response failed to fetch created Data screenshot
来自“ MultipleCreate”的响应在其成功响应中具有已创建的记录,证明已创建了记录。但是在回调中,当我单击“ GetAll”服务时,我与现有记录的信息不同。当我刷新页面一次或两次点击相同的“ GetAll”服务时,只有这样我才能得到正确的响应。我在“ customerList”参数中仅将6个对象数组用于“ MultipleCreate”。但是很少有人担心这是CSV导入操作,其中将要导入和创建1000条记录。不知道在回调过程中出了什么问题,以及我必须要做些什么才能使这些工作按预期进行。