Все зависит от того, как вы хотите делать запросы к своим подпискам позже.
Метод поиска SailsJS не позволяет прямо указать User.find({"subscriptions.expires">=today})
, если подписки определены как Массив или Коллекция.
Если вы определяете подписку как модель, вы можете сделать ее коллекцией в своей модели пользователя, ссылаясь на подписку, а затем выполнять запросы с подпиской, например Subscrition.find({'expires'>=somedate)
.
Недостатком является то, что это создает новую коллекцию, которая имеет взаимосвязь между двумя моделями, вы не получаете встроенный объект со всеми вашими данными, если это то, что вы пытаетесь выполнить.
Если вы хотите, чтобы все это было в внедренном объекте, вы можете это сделать, но тогда вам необходимо использовать метод Waterline .native, который позволяет отправлять прямые запросы в форме драйвера MongoDB NodeJS, как указано в Node.js MongoDB Driver API Documentation
было бы что-то вроде
User.native(function(err, collection) {
if (err) {
return console.log(err);
} else {
collection
.find({
'subscriptions.expires': {
$gte: new Date(2012, 7, 14)
}
}, {
'data': 1
}, 0, 1)
.toArray(function(err, subscriptions) {
if (err) {
return console.log(err);
} else {
if (subscriptions.length > 0) {
// Do whatever here
} else {
return console.log('No subscriptions found');
}
}
});
}
});
Короткий ответ: да! вам нужна новая отдельная модель для подписки –