Я пытаюсь написать запрос для сортировки документов по убыванию дат ...{sort: {paymentDate: -1 }}
.При первом запуске запроса секция запроса {sort: {paymentDate: -1 }}
кажется игнорируемой!Однако когда я обновляю страницу в браузере, применяется раздел запроса {sort: {paymentDate: -1 }}
, и запрос отображается в правильном порядке sort .
Мне нужно знать, как исправить эту проблему!
Найти под содержимым моего документа после выполнения запроса recipientsDetails.find().fetch();
в консоли браузера:
0:
payersUserId: "hbieZBFNE53GpE8LP"
paymentDate: "2019-02-11 02:37:05"
payersNumber: "+25478887633"
paymentStatus: "Failed"
recipientNumber: "+25478887633"
_id: "eFShDRzp9JM9ejG5S"
1:
payersUserId: "hbieZBFNE53GpE8LP"
paymentDate: "2019-02-08 16:02:25"
payersNumber: "+2547078887633"
paymentStatus: "Failed"
recipientNumber: "+25478887633"
_id: "SnpNwsx49mZfPNSg7"
2:
payersUserId: "hbieZBFNE53GpE8LP"
paymentDate: "2019-02-08 15:00:02"
payersNumber: "+254707888633"
paymentStatus: "Failed"
recipientNumber: "+25478087703"
_id: "ZHWSiRBYk2xoZvDzb"
Приведенные выше результаты также являются желаемым отсортированным порядком.
Возможно, приведенный ниже код helper может затенить некоторый свет.
.. / client / main.js
Template.paymentB2C.helpers({
'enableButton': function () {
var enableButtonStatusArray = [];
var userIdCode = Meteor.userId();
var phoneNumber = Meteor.users.findOne({_id: userIdCode }, { fields: { "profile.telephoneNumber": 1 } } );
var usersPhoneNumber = phoneNumber.profile.telephoneNumber;
var selectedRecipientDetails = recipientsDetails.find( { $or: [ { payersNumber: usersPhoneNumber }, { recipientNumber: usersPhoneNumber } ] },
{ fields: {
"payersUserId": 1,
"paymentDate": 1,
"paymentStatus": 1,
"_id": 1
} }).fetch();
selectedRecipientDetails.forEach((user) => {
payersUserId = user.payersUserId;
paymentDate = user.paymentDate;
paymentStatus = user.paymentStatus;
_id = user._id;
if(paymentStatus === "Failed"){
enableButtonStatusArray.push({
paymentStatus: paymentStatus,
paymentDate: paymentDate,
_id: _id
});
}
else if(paymentStatus === "Passed"){
enableButtonStatusArray.push({
paymentStatus: paymentStatus,
paymentDate: paymentDate,
_id: _id});
}
Session.set('enableButtonStatusArray2', enableButtonStatusArray );
});
var enableButtonStatusArrayForPrint = Session.get('enableButtonStatusArray2');
return enableButtonStatusArrayForPrint;
}
});
Обратите внимание, что в данном запросе отсутствует функция ...{sort: {paymentDate: -1 }}
.
Найдите код ниже Router
:
.. / client / main.js
Router.route('/paymentB2C', {
name: 'paymentB2C',
template: 'paymentB2C',
waitOn: function(){
return Meteor.subscribe('pendingPayments')
}
});
Это приводит к моей Meteor.subscribe('pendingPayments')
функции публикации:
.. / server / main.js
Meteor.publish('pendingPayments', function pendingPayments(){
return recipientsDetails.find({}, {sort: {paymentDate: -1 }});
});
Обратите внимание, что здесь у меня есть функция sort
.
Может кто-нибудь объяснить, почему при первом запуске кода sort игнорируется иДокумент сортируется случайным образом, однако после нажатия кнопки «Обновить» в браузере он сортируется как задумано (правильно)?
С нетерпением ждем вашей помощи.