2015-04-25 3 views
1

Эй, просто начав с Sails js и mongoDB, и я немного смущен.Как добавить еще одно поле в парусов ss js

У меня есть две модели с многие ко многим отношений:

user.js

module.exports = { 
    attributes: { 
    username: 'STRING', 
    password: 'STRING', 
    doors:{ 
     collection: 'door', 
     via: 'users', 
    } 
    } 
}; 

и Door.js

module.exports = { 
    attributes: { 
    name: 'STRING', 
    users:{ 
     collection: 'user', 
     via: 'doors' 
    } 
    } 
}; 

Это прекрасно работает, я могу создать пользователя и двери и связать друг с другом. Однако я хотел бы иметь другое поле в соединении, дату истечения срока действия (скажем, пользователь может иметь доступ только к определенной двери до определенной даты).

Как бы я это сделал?

ответ

1

Вам необходимо создать много для многих ассоциаций через. Однако пока они официально не поддерживаются.

Вы можете сделать это вручную.

Теперь в этом примере может быть немного сложнее получить все двери для пользователя и наоборот, потому что вы должны предварительно подготовить второй вид. Однако вы можете сделать следующее с этой установкой:

UserDoors 
    .find() 
    .where({expires:{'<':new Date()}}) 
    .populate('doors') 
    .populate('users') 
    .exec(/*....*/) 

Ваши модели

User.js 

module.exports = { 
    attributes: { 
    username: 'STRING', 
    password: 'STRING', 
    doors:{ 
     collection: 'userDoors', 
     via: 'users', 
    } 
    } 
}; 


userDoors.js 
module.exports = { 
    attributes: { 
    doors:{ 
     model: 'door' 
    }, 
    users:{ 
     model: 'user' 
    }, 
    expires: 'datetime' 
    } 
}; 



and Door.js 

module.exports = { 
    attributes: { 
    name: 'STRING', 
    users:{ 
     collection: 'userDoors', 
     via: 'doors' 
    } 
    } 
}; 

Выполните поиск Google для sails.js many to many through также помочь вам найти то, что ищете.

+0

Произошло что-то интересное, я внедрил ваше предложение, и он отлично работал с адаптером парусов, однако при переключении на адаптер парусов-монго кажется, что парус больше не видит отношения. Есть ли какие-либо ограничения в mongodb? Я заметил, что он использует определенный формат для столбца id, но учитывал это. – eptgrant

+0

hmmmm. Это странно. Я бы подтвердил, что ваш код хорошо выглядит, проверяя данные, которые вы запрашиваете, чтобы убедиться, что он правильно вставлен. У меня есть настройка отношений, как это делается в монго, и это работает. – Meeker

Смежные вопросы