Я использую паруса с mongo db над ватерлинией.Waterline MongoDb (населенный) доставленный объект теряет свой тип И функции прототипа
Позволяет сказать, что я объявляю 2 модели в моих парусах проект так:
Пользователь модель @models/User.js
упрощена:
username: {
type: 'string',
unique: true
},
passports: {
collection: 'Passport',
via: 'owner'
},
aUserFunction: function(){
console.log('I'm a user function');
}
и паспорт модель @models/Passport.js
упрощена:
password: {
type: 'string'
},
owner: {
model: 'User',
required: true
},
aPassportFunction: function(){
console.log('I'm a passport function');
}
Пока все хорошо.
Когда я принести одну из этих связанных объектов, которые я делаю это так:
sails.models.user
.findOne({ username: 'aUsername' })
.populate('passports') // The populate method allows you to get associated data
.exec(function (err, myUser) {
...
JSON.stringify(myUser); //The object returns just fine!
...
}
Как и ожидалось, вернулся myUser
объект это:
{
username:"aUsername",
passports:
[
{
password: 'aPass',
owner: 'theUsersId'
}
]
}
теперь я могу запустить myUser.aUserFunction();
, как и ожидалось, поскольку myUser
имеет тип models/User.js
.
Если я стараюсь, чтобы мои руки на конкретном паспорте я могу это сделать: var passport = myUser.passports[0];
Проблема:
Попытка запустить passport.aPassportFunction();
невозможно, так как возвращаемый объект типа Object
и не models/Passport.js
.
Теперь, из того, что я знаю, нет типа кастинг в javascript, и это было бы замечательное время для его использования.
Я бы не хотел копировать вставки значений в новый объект, чтобы использовать aPassportFunction()
, это кажется пустой тратой ресурсов.
Есть ли другой способ сделать этот общий паспорт Object
как models/Passport.js
.