Comes from the line "menu.update({name:request.body.name}, menuObject, 
{upsert: true}, onUpdate)"

It's because mongoose update takes three arguments: document, options, 
callback.  You have object, object, options, callback; thus mongoose thinks 
your options object is the callback.

rewrite as:

var onUpdate = function (err, num, raw) {
    if (!err) {
    logger.info('information stored');
    return myResponse.send ({status: 'ok' });
    } else {
    logger.info (err);
    if(err.name == 'ValidationError') {
            myResponse.statusCode = 400;
            myResponse.send({ error: 'Validation error'});
            logger.info(req.body);
        } else {
            myResponse.statusCode = 500;
            myResponse.send({ error: 'Server error' });
        }
    logger.error('internal error(%d):%s');
    }
}  
 

function onPostMenuUpdate (request,response) {
   logger.info("In onPostMenuUpdate");
    myResponse=response;
    var menu = new model.MainMenuModel ({
    'name': request.body.name,
    'link': request.body.link,
    'drop': request.body.drop
    }); 
    var menuObject=menu.toObject();

    menuObject.name = request.body.name
    
    menu.update(menuObject, {upsert: true}, onUpdate);
}

& that should work

On Friday, December 19, 2014 11:30:53 AM UTC-5, Gregory Edigarov wrote:
>
> Hello,
>
> Error: writeConcern requires callback
>     at updateWithWriteCommands 
> (/home/greg/nodejs-module/app/server/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection/core.js:530:11)
>     at Collection.update 
> (/home/greg/nodejs-module/app/server/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection/core.js:646:12)
>     at NativeCollection.(anonymous function) [as update] 
> (/home/greg/nodejs-module/app/server/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:135:28)
>     at NodeCollection.update 
> (/home/greg/nodejs-module/app/server/node_modules/mongoose/node_modules/mquery/lib/collection/node.js:61:19)
>     at Query.update 
> (/home/greg/nodejs-module/app/server/node_modules/mongoose/node_modules/mquery/lib/mquery.js:1939:20)
>     at Query.update 
> (/home/greg/nodejs-module/app/server/node_modules/mongoose/lib/query.js:1760:28)
>     at Function.update 
> (/home/greg/nodejs-module/app/server/node_modules/mongoose/lib/model.js:1638:13)
>     at model.update 
> (/home/greg/nodejs-module/app/server/node_modules/mongoose/lib/document.js:367:34)
>     at onPostMenuUpdate 
> (/home/greg/nodejs-module/app/server/requests/postRequests.js:74:10)
>     at Layer.handle [as handle_request] 
> (/home/greg/nodejs-module/app/server/node_modules/express/lib/router/layer.js:82:5)
>
> the related function is:
>
> var onUpdate = function (err, num, raw) {
>     if (!err) {
>     logger.info('information stored');
>     return myResponse.send ({status: 'ok' });
>     } else {
>     logger.info (err);
>     if(err.name == 'ValidationError') {
>             myResponse.statusCode = 400;
>             myResponse.send({ error: 'Validation error'});
>             logger.info(req.body);
>         } else {
>             myResponse.statusCode = 500;
>             myResponse.send({ error: 'Server error' });
>         }
>     logger.error('internal error(%d):%s');
>     }
> }  
>  
>
> function onPostMenuUpdate (request,response) {
>    logger.info("In onPostMenuUpdate");
>     myResponse=response;
>     var menu = new model.MainMenuModel ({
>     'name': request.body.name,
>     'link': request.body.link,
>     'drop': request.body.drop
>     }); 
>     var menuObject=menu.toObject();
>     
>     menu.update({name:request.body.name}, menuObject, {upsert: true}, 
> onUpdate);
> }
>
> How can i avoid this error. 
>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/862121a1-ed56-4790-ac4a-f8a4e3c964f8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to