2015-06-09 2 views
1

В приложении «Мой узел» я использую модуль mongoose. я узнал, что после того, какКак сохранить объект немедленно в MongoDB?

model_name.create({...}) 

объект не создается сразу, а с некоторой задержкой (буфер?). Как я могу принудительно сохранить этот новый объект в в этот конкретный момент?

+2

mongoose является асинхронным, поэтому созданный документ не может быть запрошен на следующей строке. либо используйте функцию обратного вызова успеха, либо попробуйте сделать ее синхронной в соответствии с этим принятым ответом: http://stackoverflow.com/questions/17181248/making-mongoose-js-queries-run-synchronously –

+0

Конечно! Это было так просто. Я использовал функцию обратного вызова, и он отлично работает. Большое спасибо! – user3616181

ответ

1

Mongoose вставляет значение в среднем.

Проблема в том, что вы не используете обратный вызов. Попробуйте закодировать следующим образом:

//There is the definition 
    Customer.create(YOURDATA, function (err, obj) { 
    if (err) { 
     //This will be executed if create is going bad. 
     return handleError(res, err); 
    } 
    //This code will be executed AFTER SAVE 
    console.log(obj._id): 
    return res.json(201, obj); 
    }); 
  • функции обратного вызова будет автоматически выполняться мангуста после функции СОЗДАТЬ была выполнена в BD.

  • В obj вы получите сохраненный объект из БД, а затем вы сможете получить доступ к его свойствам.

Во всяком случае, у вас есть некоторая документация:

  • mongoose docs об обратных вызовов

  • Некоторые docs о методах Async:

надеюсь, что он будет решать вы lem

+0

Проблема была решена благодаря LcLk, но ваш ответ также полезен. Поскольку никто другой не отвечает, я думаю, что это должен стать лучшим ответом. – user3616181

+0

Thnks !, рад видеть, что вы решили! Если у вас все еще есть сомнения, скажите, и я постараюсь помочь! –