mongodb - Unable to insert from Meteor method with object -


morning folks! running trouble trying should simple insert in meteor, passing object killing me.

i have set of filters on site working, want save selector of filters collection can pull documents match several filters.

the problem seems passing object contains saved search. object have collection2 might see nested properties ("addresses.state") i've got "blackbox: true" set on schema, don't know why looking there...

here's whole flow:

form save search name:

<template name="savesearch">   <div>     <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#savesearchform" aria-expanded="false" aria-controls="savesearchform">       advanced search     </button>     <div class="collapse" id="savesearchform">       <div class="well">         // display filters awesome meteor-tabular-filter package         {{> expression_filter}}         <form id="savesearch" class="form-inline">           <div class="form-group">             <label for="searchname">save search</label>             <input type="text" class="form-control" name="searchname" id="searchname" placeholder="search name">           </div>           <button type="submit" class="btn btn-primary">save search</button>         </form>       </div>     </div>   </div> </template> 

template event call method insert search:

template.savesearch.events({   'submit #savesearch' ( event, template ) {     event.preventdefault();      let queries = session.get("filter_selector"),         search = {           name: string(template.find( "[name='searchname']" ).value),           selector: queries         };      console.log('search: ' + json.stringify(search));      meteor.call( 'insertsearch', search, ( error, response ) => {       if ( error ) {         bert.alert( error.reason, 'warning', 'growl-top-right' );       } else {         bert.alert( 'search saved', 'success', 'growl-top-right' );       }     });   } }); 

here's couple of different console.log(); results passed method:

1) {"name":"alabama","selector":{"addresses.state":"al"}} 2) {"name":"alabama","selector":{"$and":[{"addresses.state":"al"},{"lastname":"knapp"}]}} 

meteor method insert search

// in both/methods/insert meteor.methods({   insertsearch( doc ) {     check( doc, searches.simpleschema() );      var defaultproperties = {       orgid    : meteor.user().profile.currentorg,       createdby: meteor.userid(),       createdat: moment().todate()     };      newdoc = _.extend(doc, defaultproperties);      console.log('search insert: ' + json.stringify(newdoc));      try {       var searchid = searches.insert( newdoc, {bypasscollection2: true} );       console.log('search insert successful');       return searchid;     } catch( exception ) {       console.log('search insert failed');       throw new meteor.error(500, 'search failed save.');     }   } }); 

here's couple of different console.log(); results passed insert:

1) {"name":"alabama","selector":{"addresses.state":"al"},"orgid":"testorg","createdby":"dho3vr3fizbsybjks","createdat":"2016-01-28t13:38:27.499z"} 2) {"name":"alabama","selector":{"$and":[{"addresses.state":"al"},{"lastname":"knapp"}]},"orgid":"testorg","createdby":"dho3vr3fizbsybjks","createdat":"2016-01-28t13:42:51.468z"} 

and schema definition searches collection...

searches = new mongo.collection( 'searches' );  searches.allow({   insert: () => false,   update: () => false,   remove: () => false });  searches.deny({   insert: () => true,   update: () => true,   remove: () => true });  let searchschema = new simpleschema({   name: {     label: 'search name',     type: string   },   selector: {     label: 'search criteria',     type: object,     blackbox: true,     optional: true   },   orgid: {     type: string,     optional: true   },   createdby: {     type: string,     label: "created by",     optional: true,     autovalue: function() {       return meteor.userid()     }   },   createdat: {     type: date,     label: "created at",     optional: true,     autovalue: function () {       if (this.isinsert) {         return new date;       }     },     denyupdate: true   },   updatedat: {     type: date,     label: "updated at",     optional: true,     autovalue: function () {       if (this.isinsert) {         this.unset();       } else {         return new date;       }     }   } });  searches.attachschema( searchschema ); 

lastly, here's error log kadira:

message: search failed save. [500]  stack: error: search failed save. [500]     @ [object object].meteor.methods.insertsearch (both/methods/insert/searches.js:21:13)     @ [object object].methodmap.(anonymous function) (packages/meteorhacks_kadira/lib/hijack/wrap_session.js:164:1)     @ maybeauditargumentchecks (livedata_server.js:1698:12)     @ livedata_server.js:708:19     @ [object object]._.extend.withvalue (packages/meteor/dynamics_nodejs.js:56:1)     @ livedata_server.js:706:40     @ [object object]._.extend.withvalue (packages/meteor/dynamics_nodejs.js:56:1)     @ livedata_server.js:704:46     @ trycalltwo (/users/allen/.meteor/packages/promise/.0.5.1.1u69k2a++os+web.browser+web.cordova/npm/node_modules/meteor-promise/node_modules/promise/lib/core.js:45:5)     @ doresolve (/users/allen/.meteor/packages/promise/.0.5.1.1u69k2a++os+web.browser+web.cordova/npm/node_modules/meteor-promise/node_modules/promise/lib/core.js:171:13) 

thanks in advance help!


Comments

Popular posts from this blog

Hatching array of circles in AutoCAD using c# -

ios - UITEXTFIELD InputView Uipicker not working in swift -

Python Pig Latin Translator -