Anatolij
не помню,
Anatolij
User.defineStatic('staticMethod', function(...){})
Anatolij
помоему
Anatolij
потом вызывается через
Anatolij
User.staticMethod
Anatolij
UserSchema.statics.listFilter = function (user, callback) { if (user) { if (user.root) { return callback(null, {}, fieldsReadableByRootOrSelf); } else { return callback(null, {'accountVerified': true}, fieldsReadable); } } return callback(null, false); };
Anatolij
во
Anatolij
"mongoose": "4.3.6",
Anatolij
не знаю, как сейчес
pinelover
а как его вызывать потом, если нужно массив получить? то есть вот мой запрос например:
pinelover
User.find({role: 'user'}, select, cursor) .then((users) => { return User.populate(users, [{path: 'clients', model: 'Client'}]) } ) .then((users) => users) .then(success(res)) .catch(next)
Anatolij
User.listFilter(...).then()
pinelover
отлично, сейчас затещщу) В таком затыке, мрям пива бы хоть сейчас проставил))
pinelover
спасибо!
Anonymous
какой редактор мультифайловость поддерживает?
Anatolij
webstorm, sublime, micro, vscode - много
Anonymous
а то в webstorm, vscode не видит где переменная из html обьявлена
Anatolij
vim
Anonymous
vim трудновато
Anonymous
у меня раскладка специфичная
Anatolij
может для вэбсторма надо какие то плагины ещё ставить
pinelover
vscode хороший
pinelover
из бюджетных
Anatolij
sublime но денег клянчит постоянно
Anatolij
хотя работает без ограничений
pinelover
лучше Atom-а по скорости
Anatolij
вообще с подсказками по переменным помоему лучший вэбсторм
Anonymous
Anonymous
ни вебшторм, ни код эту переменную не находит
Максим
А съ... он должен её находить? Ты её не объявил, а используешь
Anonymous
все обьявлено
Anatolij
имхо какие то плагины надо ставить для vuejs...
Anonymous
через data() и data: {} пробовал
Anonymous
один хер
Anonymous
ща все поставлю
pinelover
У меня получается такая функция, но её похоже всё равно в цикле придется использовать...для всех найденных юзеров userSchema.statics.listClients = function (id, callback) { if (id) { const clients = mongoose.model('Client') return callback(clients.find({agent: id})) } return callback(null, false); }
Anonymous
авось какой-то подойдет
Максим
все обьявлено
Не может быть потому что ты раскидал все по разным файлам и редактор к этому жизнь не готовила?
Anatolij
userSchema.statics.listClients - может промис возвращать, калбек не нужен вроде
pinelover
но суть такая примерно?
Anonymous
@zavitaev а как надо?
Anonymous
вынес только html, все равно не находит
Максим
Посмотри плагины vue для конкретного редактора
Anonymous
ну в vscode вроде venture решает все
Anatolij
У меня получается такая функция, но её похоже всё равно в цикле придется использовать...для всех найденных юзеров userSchema.statics.listClients = function (id, callback) { if (id) { const clients = mongoose.model('Client') return callback(clients.find({agent: id})) } return callback(null, false); }
userSchema.methods.listClients = function () { const user = this; return Promise.all(user.clients.map(function(clientId){ return mongoose.model('Client').find({agent: clientId}); })); } потом mongoose.model('Client').get(userId).then(function(user){ return user.listClients() .then(function(clientsFound){...}); });
Anatolij
как бы к объекту user lобавил новый метод, которые ищет агентов
Anonymous
у вас все в одном файле чтоли, и никто не сталкивался?
pinelover
userSchema.methods.listClients = function () { const user = this; return Promise.all(user.clients.map(function(clientId){ return mongoose.model('Client').find({agent: clientId}); })); } потом mongoose.model('Client').get(userId).then(function(user){ return user.listClients() .then(function(clientsFound){...}); });
сейчас попробую переварить...у меня же clients в колекции пустое в кажом документе - это просто ссылка, то есть user.clients.map(function(clientId)...не вернет ничего, там пусто
Anatolij
я предполагал
Anatolij
user.clients = [client1id, client2id]
pinelover
а, ну вот там не так...уже было всё добавлено перед изменением модели. то есть users и clients заполнены, у clients есть свойство agent - оно равно _id юзера, но в users в свойстве clients только реф на массив клиентов...mongoose.model('Client').find({agent: clientId}) - там нет clientId, ничего нет
Максим
ну в vscode вроде venture решает все
Что-то не вижу такого плагина, если о плагине речь
pinelover
или я туплю)
Anonymous
"Vetur"
Максим
pinelover
я предполагал
в общем, похоже придется через цикл фигачить так или иначе?
Anatolij
цикл для асинхронных промисов
pinelover
ага, сейчас попробуем
Anonymous
atom тоже не находит
Anonymous
даже в одном файле
pinelover
da - Promise.all
получилось! сделал такой запрос: User.find({role: 'user'}, select, cursor) .then((users) => { return Promise.all(users.map(async function (user) { let clients = await mongoose.model('Client').find({agent: user.id}) return { ...user, clients } })) }) .then(success(res)) .catch(next) только теперь в результате запроса к пользователю через свойство _doc приходится обращаться, но уже успех))
Anonymous
best-practices, это однофайловые компоненты?
Anonymous
Реят, что я делаю не так Controllers.vue <script> import axios from 'axios' var nameUser export function GetCurrentUser () { localStorage.getItem('token_vaccinations') axios.defaults.headers.common['Authorization'] = localStorage.getItem('token_vaccinations') axios.get('http://localhost:8084/jwt/encodeJwt', {responeType: 'application/json'}) .then(function (response) { nameUser = JSON.parse(JSON.stringify(response.data)) }) .catch(function (error) { console.log(error) }) return nameUser } </script> Из файла Vaccinations.vue в mounted, пытаюсь получить возвращаемое значеие import {GetCurrentUser} from '../components/Controllers.vue' ... var name = GetCurrentUser() ... Ругается vue.esm.js?efeb:476 [Vue warn]: Error in mounted hook: "TypeError: Object(...) is not a function" found in ---> <General> at src/components/Vaccinations.vue <App> at src/App.vue <Root>
Alex
Вот он и ругается потому что пытается обработать вью-лоадером и не находит нужной ему структуры
Anonymous
Вот он и ругается потому что пытается обработать вью-лоадером и не находит нужной ему структуры
Понял свою ошибку... теперь не ругается, но значения почему-то не return this.nameUser1 = GetCurrentUser()
Alex
Ну это уже про то как вы жс модуль сделали) покажите код весь
Alex
Ну есть же пастебин тот же. С мобилки код такой особенно приятно разбирать
Anonymous
ок
Alex
ок
Сообщение отредактируйте, на ссылку
Anonymous
из компонента делаю this.nameUser1 = GetCurrentUser() Получаю undefined
Alex
Так вы ничего из функции и не возвращаете
Anonymous
return nameUser
Alex
Это вы из промиса аксиоса, а из функции
Anonymous
Это вы из промиса аксиоса, а из функции
Если из функции то возвращается пустой массив
Anonymous
такое ощущения что return происходит быстрее чем запрос axios
Alex
У функции getCurrentUser нет ни одного return