2015-09-16 2 views
3

У меня есть схемы:Как обновить объект в mongodb с помощью мангуста?

exports.participant = function(mongodb){ 
    var participantSchema = new mongoose.Schema({ 
    uniqueid: {type: String, unique: true}, 
    channel: String, 
    conference: String, 
    calleridnum: String, 
    calleridname: String, 
    event: String, 
    status : { type: Boolean, default: 0 } 
},{ collection: 'participants'}); 

    var participant = mongodb.model('Participant', participantSchema); 
    return participant; 
} 

Я уже пробовал how to update a object in mongodb via mongoose, но до сих пор она не работает для меня.

Я хочу, чтобы обновить статус 1

Я зову код обновления здесь. ,

файл расположение моей схемы является: ../models/app.js

файл расположение моего обновления является: ../lib/update.js

Это мой код обновления. ,

var appInit = require('../app'); 
var logger = appInit.logger; 
var basedir = appInit.basedir; 
var connection = appInit.connection; 


var mongodb = appInit.mongodb; 

var handleAsteriskAmi = require(basedir+'/lib/handleasteriskami'); 
var asteriskAmi = new handleAsteriskAmi(); 

var handleHttpProc = require(basedir+'/lib/handlehttpproc'); 
var httpProc = new handleHttpProc(); 

function handleSocketio(){ 
    this.init = function(io){ 
    io.sockets.on('connection',function(socket){ 
     if(socket){ 
     logger.info("socket.io is connected"); 
     } 
     socket.on('disconnect', function() { 
     logger.error("Socket.io is disconnected"); 
     }); 
     socket.on('action', function(data){ 
     var result = JSON.parse(JSON.stringify(data)); 
     asteriskAmi.listenActionConfbridge(result,function(response){ 
      logger.info(JSON.stringify(response)); 
      if(response.event=="originate"){ 
        io.sockets.emit("response",response); 
      } 
      if(response.event=="confbridgemute" || response.event=="confbridgeunmute"){ 
        io.sockets.emit("response",response); 
        mongodb.model("Participant").update(
        {channel: response.channel}, 
        {$set: {status: 1}} 
       ); 
      } 
      if(response.event=="confbridgelock" || response.event=="confbridgeunlock"){ 
        io.sockets.emit("response",response); 
      } 
     }); 
     }); 

    }); 
+0

Можете ли вы показать нам, где вы вызываете код обновления, где вы создаете 'mongodb' mongoose объект? – chridam

+0

Здравствуйте @chridam. Я обновляю свой вопрос. , –

ответ

0

Я считаю, что вам нужно передать в объект мангустов в функции участника в ../models/app.js, которые затем можно использовать для преобразования participantSchema в модели. Таким образом, в вашем ../models/app.js, вы можете реализовать функцию participant как

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 
exports.participant = function(){ 
    var participantSchema = new Schema({ 
     uniqueid: {type: String, unique: true}, 
     channel: String, 
     conference: String, 
     calleridnum: String, 
     calleridname: String, 
     event: String, 
     status : { type: Boolean, default: 0 } 
    },{ collection: 'participants'}); 

    var participant = mongoose.model('Participant', participantSchema); 
    return participant; 
} 

Вызовите модель участника в вашем ../lib/update.js:

var appInit = require('../app'); 
var Participant = appInit.participant(); 
Participant.update(
    {channel: response.channel}, 
    {$set: {status: 1}} 
); 
Смежные вопросы