Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用mongoose更新mongodb中的对象?_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 如何使用mongoose更新mongodb中的对象?

Node.js 如何使用mongoose更新mongodb中的对象?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个模式: exports.participant = function(mongodb){ var participantSchema = new mongoose.Schema({ uniqueid: {type: String, unique: true}, channel: String, conference: String, calleridnum: String, calleridname: String, event: String,

我有一个模式:

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;
}
我已经试过了,但还是不行

我想将状态更新为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=新的handleAsteriskAmi();
var handleHttpProc=require(basedir+'/lib/handleHttpProc');
var httpProc=new handleHttpProc();
函数handleSocketio(){
this.init=函数(io){
io.sockets.on('connection',函数(socket){
中频(插座){
logger.info(“socket.io已连接”);
}
socket.on('disconnect',function(){
logger.error(“Socket.io断开”);
});
socket.on('action',函数(数据){
var result=JSON.parse(JSON.stringify(data));
asteriskAmi.listenActionConfbridge(结果、函数(响应){
logger.info(JSON.stringify(response));
if(response.event==“发起”){
io.sockets.emit(“响应”,响应);
}
if(response.event==“confbridgemute”| | response.event==“confbridgeunmute”){
io.sockets.emit(“响应”,响应);
mongodb.模型(“参与者”).更新(
{channel:response.channel},
{$set:{状态:1}}
);
}
if(response.event==“confbridgelock”| | response.event==“confbridgeunlock”){
io.sockets.emit(“响应”,响应);
}
});
});
});

我认为您需要在
./models/app.js
中的参与者函数中传入mongoose对象,然后您可以使用该对象将
参与者模式
转换为模型。因此,在
./models/app.js
中,您可以按照

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}}
);

你能告诉我们你在哪里调用更新代码,在哪里创建
mongodb
mongoose对象吗?你好@chridam。我更新了我的问题。