dburles / meteor-collection-helpers

⚙️ Meteor package that allows you to define helpers on your collections
https://atmospherejs.com/dburles/collection-helpers
MIT License
498 stars 31 forks source link

Meteor.users.helpers not defined #27

Open JimHough opened 9 years ago

JimHough commented 9 years ago

Hi,

I'm trying to use this package to link to another document on the users collection. Its throwing an error at the line 'Meteor.users.helpers({....});' It does this on a freshly created meteor project version 1.0.3.2 Any ideas what it could be?

Thanks

dburles commented 9 years ago

Hey @JimHough what's the error message you saw?

ghost commented 9 years ago

Same problem here. I installed latest windows preview release from https://github.com/meteor/meteor/wiki/Preview-of-Meteor-on-Windows

When I start the app - I get this error:

W20150306-15:24:50.920(5.5)? (STDERR)
W20150306-15:24:50.922(5.5)? (STDERR) C:\Users\username\AppData\Local\.meteor\packages\meteor-tool\1.1.0-winr.12\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\fibers\future.js:245
W20150306-15:24:50.922(5.5)? (STDERR)                                           throw(ex);
W20150306-15:24:50.922(5.5)? (STDERR)                                                 ^
W20150306-15:24:50.922(5.5)? (STDERR) TypeError: Object [object Object] has no method 'helpers'
W20150306-15:24:50.922(5.5)? (STDERR)     at app\collections\users.js:3:14
W20150306-15:24:50.922(5.5)? (STDERR)     at app\collections\users.js:10:3
W20150306-15:24:50.923(5.5)? (STDERR)     at D:\code\apps\dummyapp\dummyapp\.meteor\local\build\programs\server\boot.js:222:10
W20150306-15:24:50.923(5.5)? (STDERR)     at Array.forEach (native)
W20150306-15:24:50.923(5.5)? (STDERR)     at Function._.each._.forEach (C:\Users\username\AppData\Local\.meteor\packages\meteor-tool\1.1.0-winr.12\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\underscore\underscore.js:79:11)
W20150306-15:24:50.923(5.5)? (STDERR)     at D:\code\apps\dummyapp\dummyapp\.meteor\local\build\programs\server\boot.js:117:5
W20150306-15:24:56.408(5.5)? (STDERR)
W20150306-15:24:56.409(5.5)? (STDERR) C:\Users\username\AppData\Local\.meteor\packages\meteor-tool\1.1.0-winr.12\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\fibers\future.js:245
W20150306-15:24:56.409(5.5)? (STDERR)                                           throw(ex);
W20150306-15:24:56.409(5.5)? (STDERR)                                                 ^
W20150306-15:24:56.409(5.5)? (STDERR) TypeError: Object [object Object] has no method 'helpers'
W20150306-15:24:56.409(5.5)? (STDERR)     at app\collections\users.js:3:14
W20150306-15:24:56.409(5.5)? (STDERR)     at app\collections\users.js:10:3
W20150306-15:24:56.409(5.5)? (STDERR)     at D:\code\apps\dummyapp\dummyapp\.meteor\local\build\programs\server\boot.js:222:10
W20150306-15:24:56.410(5.5)? (STDERR)     at Array.forEach (native)
W20150306-15:24:56.410(5.5)? (STDERR)     at Function._.each._.forEach (C:\Users\username\AppData\Local\.meteor\packages\meteor-tool\1.1.0-winr.12\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\underscore\underscore.js:79:11)
W20150306-15:24:56.410(5.5)? (STDERR)     at D:\code\apps\dummyapp\dummyapp\.meteor\local\build\programs\server\boot.js:117:5
=> Exited with code: 8
W20150306-15:25:01.627(5.5)? (STDERR)
W20150306-15:25:01.627(5.5)? (STDERR) C:\Users\username\AppData\Local\.meteor\packages\meteor-tool\1.1.0-winr.12\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\fibers\future.js:245
W20150306-15:25:01.628(5.5)? (STDERR)                                                 ^
W20150306-15:25:01.628(5.5)? (STDERR) TypeError: Object [object Object] has no method 'helpers'
W20150306-15:25:01.628(5.5)? (STDERR)     at app\collections\users.js:3:14
W20150306-15:25:01.629(5.5)? (STDERR)     at app\collections\users.js:10:3
W20150306-15:25:01.629(5.5)? (STDERR)     at D:\code\apps\dummyapp\dummyapp\.meteor\local\build\programs\server\boot.js:222:10
W20150306-15:25:01.629(5.5)? (STDERR)     at Array.forEach (native)
W20150306-15:25:01.629(5.5)? (STDERR)     at Function._.each._.forEach (C:\Users\username\AppData\Local\.meteor\packages\meteor-tool\1.1.0-winr.12\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\underscore\underscore.js:79:11)
W20150306-15:25:01.628(5.5)? (STDERR)                                           throw(ex);
W20150306-15:25:01.630(5.5)? (STDERR)     at D:\code\apps\dummyapp\dummyapp\.meteor\local\build\programs\server\boot.js:117:5
=> Exited with code: 8
=> Your application is crashing. Waiting for file change.

I wrote the following code in users.js

Meteor.users.helpers({ some code here });
dburles commented 9 years ago

Does it work okay on other collections?

ghost commented 9 years ago

Actually, I am using the package on users collections only. Let me check.

EDIT: Yes. the package is working on other collections. I think the problem is with users at the moment.

levino commented 9 years ago

I have the same when updating meteor. Actually had the issue for quite a time. It could have to do with the need to go from Meteor.collection to Mongo.collection but this is just an educated guess.

dburles commented 9 years ago

I wonder if this current bug is windows specific, @JimHough are you running Meteor on windows by any chance?

levino commented 9 years ago

@dburles using Ubuntu 14.04. Not working on any of my three systems (all Ubuntu 14.04)

JimHough commented 9 years ago

I am also running on Ubuntu 14.04. It seems as though the helpers prototype is not applied or is deleted from the users collection.

levino commented 9 years ago

@dburles Will you be able to work on this in the foreseeable future?

levino commented 9 years ago

I made the warning go away by doing:

var Users = Meteor.users;

Users.helpers({});

This was quite helpful: https://github.com/ongoworks/meteor-security/issues/5

Can the others confirm that they are also using collection-behaviours?

dburles commented 9 years ago

@JimHough tried this project today on Ubuntu 14.04 and couldn't reproduce your error, are you sure that the issue isn't caused by a package conflict like @Levino ?

AlexFrazer commented 9 years ago

Having problems meself with this

dburles commented 9 years ago

@AlexFrazer any further info you may have, such as system etc would be super useful thanks!

AlexFrazer commented 9 years ago

@dburles, I am sorry, it seemed this was a result of pub/sub. My solution was to put it in a null publication.

Meteor.publish(null, function () {
  return Meteor.users.find({
    _id: this.userId
  }, {
    fields: {
      services: false
    }
  });
}, { is_auto: true });
dougserfass commented 9 years ago

I am getting another error related to Meteor.users.helpers. While the exception is generated by your code, the error is not caused by your code. I inherited this project and am getting the error Error: [Can't apply helpers to 'users' a transform function already exists!] when I try to implement Meteor.users.helpers for kaoskeya:admin kaoskeya:accounts-autoform-admin Have searched my app and cannot locate a duplicate of Meteor.users.helpers. Any suggestions as to how to fix this problem? Thanks.

dougserfass commented 9 years ago

meteor list 255kb:meteor-status 1.2.0* Meteor Status automatically alerts u... 3stack:presence 1.0.3 Track who' online on your app, and w... accounts-base 1.2.0 A user account system accounts-facebook 1.0.4 Login service for Facebook accounts accounts-google 1.0.4 Login service for Google accounts accounts-password 1.1.1 Password support for accounts alanning:roles 1.2.13 Role-based authorization aldeed:autoform 4.2.2* Easily create forms with automatic i... aldeed:collection2 2.3.3 Automatic validation of insert and u... aldeed:template-extension 3.4.3 Adds template features currently mis... avatar 0.7.6+ Consolidated user avatar template (t... base-model 0.1.3+ A model for all other models to inhe... bootstrap-contextmenu 0.0.1+ A meter package wrapper to https://g... canvas-roles 0.0.0+ cfs:graphicsmagick 0.0.18 Adds gm to scope with the ability... circular-menu 0.0.0+ dburles:collection-helpers 1.0.3 Transform your collections with help... dburles:jquery-tinysort 0.5.5 TinySort, a small and simple jQuery ... dsyko:meteor-node-csv 0.3.7 node-csv npm packaged for meteor. email 1.0.6 Send email messages fds:keycodes 1.0.2 Names for event key codes force-ssl 1.0.4 Require this application to use HTTPS fortawesome:fontawesome 4.3.0 Font Awesome (official): 500+ scalab... hammer:hammer 2.0.4_2 Hammer.js (official) - multi-touch... html-parser 0.0.0+ html2canvas 0.0.0+ http 1.1.0 Make HTTP calls to remote servers intercom-local 1.2.4+ Intercom.io basic integration (uses ... iron:router 1.0.7* Routing specifically designed for Me... jag:pince 0.0.6* A logger for Meteor inspired by log4... jquery 1.11.32 Manipulate the DOM using CSS sele... jstree 3.1.0+ Package wrapper for jstree plugin. kaoskeya:accounts-autoform-admin 0.0.1 Manage users module for kaoskeya:adm... kaoskeya:admin 0.2.5 Simple autoform based admin that int... matb33:collection-hooks 0.7.13 Extends Mongo.Collection with befor... matdutour:outdated-browser 0.1.1 Detects outdated browsers and advise... meteor-platform 1.2.2 Include a standard set of Meteor pac... meteorhacks:cluster 1.6.4* Clustering solution for Meteor with ... meteorhacks:kadira 2.20.3* Performance Monitoring for Meteor meteorhacks:kadira-profiler 1.1.0* CPU Profiler for Kadira meteorhacks:npm 1.3.0 Use npm modules with your Meteor App meteorhacks:zones 1.4.0* Zone.Js integration for meteor mirageglobe:html5shivcdn 1.2.3 Latest version html5shiv loaded via ... mizzao:jquery-ui 1.11.2 Simple lightweight pull-in for jQue... momentjs:moment 2.10.3 Moment.js (official): parse, valida... mrt:cron 0.0.1 Simple meteor.cron npm-container 1.0.0+ Contains all your npm dependencies ongoworks:security 1.1.0* Logical security for client-originat... pascoual:pdfkit 1.0.5 PDFKit, the PDF generation library pauli:accounts-linkedin 1.1.2 Accounts service for LinkedIn accounts pfafman:multer 0.1.0 Add Multer to meteor plotter 0.0.0+ redactor 10.0.5+ Redactor WYSIWYG html editor. reywood:iron-router-ga 0.6.0 Google analytics (universal edition)... s3-server 0.0.0+ Upload files to S3. Allows use of Kn... sacha:spin 2.0.4* Simple spinner package for Meteor selection-box 0.0.0+ selectionchange-polyfill 0.0.0+ sergeyt:livequery 1.3.7 Live Query utilizes the power of jQu... server-time 0.1.0+ Package to compensate for client/ser... service-configuration 1.0.4 Manage the configuration for third-p... socialize:messaging 0.2.1+ A social messaging package LOCAL tmeasday:html5-history-api 4.1.2 HTML5 History API expansion for brow... twbs:bootstrap 3.3.4* The most popular front-end framework... underscore 1.0.3 Collection of small helpers: .map, ... user-model 0.1.2+ A social user package useraccounts:bootstrap 1.9.1* Accounts Templates styled for Twitte... uzumaxy:prevent-backspace 0.0.1 Prevents the backspace from navigati... voidale:better-emails 0.0.1+ Send Better Emails voidale:bootstrap-alerts 0.3.5 Bootstrap styled alerts with halflings voidale:bootstrap-dynamic-modal 0.0.1+ Simple shortcut of bootstrap 3 modals. voidale:meteor-notification 0.0.2+ Adds notification functionality voidale:minimap 0.0.1+ Wrapper for mgMiniMap Jquery minimap... voidale:nano-scroller 0.8.6+ A wrapper for nano Custom Scrollbar. voidale:offcanvas-chat 0.0.1+ Simple off canvas chat voidale:stripe-subscriptions 0.0.1+ Complete package for Stripe Subscipt... webshot 0.0.0+ Webshot - NPM Screenshot Library usi... zimme:iron-router-active 1.0.4* Active route/path template helpers f...

dburles commented 9 years ago

@dougserfass it appears as though another package has added a transform function to the Meteor.users collection.

dougserfass commented 9 years ago

as you can see from meteor list, i inherited a lot of added packages in this project i am working with kaoskeya to try to identify the package with the transform function do you know of any easy way to determine which package contains the transform function?

harin commented 9 years ago

I am getting the same error

W20150729-18:44:26.862(7)? (STDERR) /Users/username/.meteor/packages/meteor-tool/.1.1.3.hn2ytd++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:245
W20150729-18:44:26.862(7)? (STDERR)                         throw(ex);
W20150729-18:44:26.862(7)? (STDERR)                               ^
W20150729-18:44:26.867(7)? (STDERR) TypeError: Object [object Object] has no method 'helpers'
W20150729-18:44:26.867(7)? (STDERR)     at RouteController.extend.layoutTemplate (packages/me:post/collections/news.js:2:1)
W20150729-18:44:26.867(7)? (STDERR)     at /Users/username/Documents/lab/project1/myapp/meteor/.meteor/local/build/programs/server/packages/me_post.js:161:4
W20150729-18:44:26.867(7)? (STDERR)     at /Users/username/Documents/lab/project1/myapp/meteor/.meteor/local/build/programs/server/packages/me_post.js:222:3
W20150729-18:44:26.867(7)? (STDERR)     at /Users/username/Documents/lab/project1/myapp/meteor/.meteor/local/build/programs/server/boot.js:222:10
W20150729-18:44:26.867(7)? (STDERR)     at Array.forEach (native)
W20150729-18:44:26.867(7)? (STDERR)     at Function._.each._.forEach (/Users/username/.meteor/packages/meteor-tool/.1.1.3.hn2ytd++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
W20150729-18:44:26.867(7)? (STDERR)     at /Users/username/Documents/lab/project1/myapp/meteor/.meteor/local/build/programs/server/boot.js:117:5

Here is my usage, even if I comment out my implementation and leave only the News.helper I still get an error.

News = new Mongo.Collection('news');
News.helpers({
    imageUrl: function() {
        var image = Images.find(this.image_id);
        return image.url({store:'images'});
    },
    thumbnailUrl: function() {
        var image = Images.find(this.image_id);
        return image.url({store:'thumbs'});
    }
});

Here is my package list, I saw in another issue that collectionFS might not work with this package?

accounts-password           1.1.1  Password support for accounts
accounts-ui                 1.1.5  Simple templates to add login widgets to...
aldeed:autoform             5.3.2  Easily create forms with automatic inser...
aldeed:collection2          2.3.3  Automatic validation of insert and updat...
cfs:ejson-file              0.1.4  CollectionFS, FS.File as EJSON type
cfs:filesystem              0.1.2  Filesystem storage adapter for CollectionFS
cfs:graphicsmagick          0.0.18  Adds `gm` to scope with the ability to ...
cfs:standard-packages       0.5.9  Filesystem for Meteor, collectionFS
dburles:collection-helpers  0.1.6* Collection helpers
fortawesome:fontawesome     4.3.0  Font Awesome (official): 500+ scalable v...
iron:router                 1.0.9  Routing specifically designed for Meteor
jquery                      1.11.3_2  Manipulate the DOM using CSS selectors
less                        1.0.14  The dynamic stylesheet language
meteor-platform             1.2.2  Include a standard set of Meteor package...
sacha:spin                  2.3.1  Simple spinner package for Meteor
underscore                  1.0.3  Collection of small helpers: _.map, _.ea...
zcurtis:uikit               2.21.2  UIKit repackaged for Meteor (from fork)
dburles commented 9 years ago

Hey @harinsa somehow your project is using a very old version of collection-helpers.

harin commented 9 years ago

@dburles whoops, sorry about that, did not specify the version and somehow meteor gave me that version. Change to @1.0.3 and it works now.

kidchenko commented 9 years ago

Hi, i am having the same problem :(

crapthings commented 8 years ago

we can't attach helpers to Meteor.users

levino commented 8 years ago

@crapthings Please elaborate, give some references. Thanks.

crapthings commented 8 years ago
Meteor.users.helpers

    organization: ->
        Organizations.findOne @organizationId

ypeError: Object [object Object] has no method 'helpers' W20151005-23:47:17.861(8)? (STDERR) at collections/users.coffee:1:14 W20151005-23:47:17.861(8)? (STDERR) at collections/users.coffee:1:1 W20151005-23:47:17.862(8)? (STDERR) at /Volumes/Data/dev/nexushubs/lawflow/mobile1/.meteor/local/build/programs/server/boot.js:242:10 W20151005-23:47:17.862(8)? (STDERR) at Array.forEach (native) W20151005-23:47:17.862(8)? (STDERR) at Function..each..forEach (/Users/monsterstep/.meteor/packages/meteor-tool/.1.1.9.1mnd3gj++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11) W20151005-23:47:17.862(8)? (STDERR) at /Volumes/Data/dev/nexushubs/lawflow/mobile1/.meteor/local/build/programs/server/boot.js:137:5

levino commented 8 years ago

@crapthings This is not how this works...

zeroasterisk commented 8 years ago

FYI - this happens when you add any package which applies a _transform on the Meteor.users collection... for example it can be replicated very easily by adding both this package and https://github.com/copleykj/socialize-user-model/

$ grep -r '_transform' .meteor/local/build/programs/server/packages/
dburles commented 8 years ago

Hey @zeroasterisk are you applying helpers to Meteor.users or Users?

dburles commented 8 years ago

Though from glancing at the source code, it's unlikely that it wouldn't conflict with collection-helpers

VitorHP commented 8 years ago

Well. I'm having the same kind of error, but not exactly with the same setup.

I can't use collection-helpers inside any packages. I have some local packages, one of them (app-core) declares a bunch of collections and helpers and export them for use by other local packages and the main app.

I'm getting `Object [object Object] has no method 'helpers'"

I tried api.use('dburles:collection-helpers') on the same package as the collections, on another package required by the app-core package and on the main app, but nothing works.

The only way to make it work is putting my collections.js in the main app and requiring dburles:collection-helpers from the main app too.

dburles commented 8 years ago

@VitorHP it should work alright, I'm pretty sure telescope does exactly that, maybe take a look at the source?

VitorHP commented 8 years ago

@dburles Alright! For some reason I was getting a very old version of the lib. When I specified the right version, it started to work again.

Probably my fault, since I started learning Meteor just these days.

Thank you very much for the help!

in0ni commented 7 years ago

I am having a similar issue using the TAPi18n-db package. Is there any workaround?

Error thrown is from here: https://github.com/dburles/meteor-collection-helpers/blob/master/collection-helpers.js#L5

dburles commented 7 years ago

@in0ni Unfortunately that package isn't compatible with collection-helpers, I see you have opened an issue over there, hopefully it can be resolved

crapthings commented 6 years ago

if u have package that doesn't compatible with collection-helpers

try change the order of package

Meteor.users.helpers undefined

mikowals:batch-insert dburles:collection-helpers

working

dburles:collection-helpers mikowals:batch-insert

medisoft commented 6 years ago

Hello! I'm having the same problem as this error

server/collections/sources.ts (21, 20): Property 'helpers' does not exist on type 'Collection<Source>'.
server/collections/users.ts (6, 14): Property 'helpers' does not exist on type 'Collection<User>'.

I have version 1.1.0 of collection-helpers

Meteor runs after that alerts, and in meteor shell I can access the helpers, but it is annoying to see that warnings/errors

Any way to add a property called helpers to that type?

Thanks!

medisoft commented 6 years ago

Ok, I made it work.

I installed the meteor typings from this url https://github.com/meteor-typings/meteor

Then changed the meteor typing in typings/globals/meteor/index.d.ts

search for interface Collection<T> { and at the end of that interface add something like this

helpers(helpers: any): any;

Then everything worked without the warning.

I suppose the dburles:collection-helprs should add the typings, but I don't know how to do that