如何使用 mongoose 更新 mongodb 中的对象?
Posted
技术标签:
【中文标题】如何使用 mongoose 更新 mongodb 中的对象?【英文标题】:How to update a object in mongodb using mongoose? 【发布时间】:2015-12-12 14:37:54 【问题描述】:我有一个架构:
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);
);
);
);
【问题讨论】:
你能告诉我们你在哪里调用更新代码,你在哪里创建mongodb
mongoose 对象?
你好@chridam。我更新我的问题。 .
【参考方案1】:
我相信您需要在../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
);
【讨论】:
以上是关于如何使用 mongoose 更新 mongodb 中的对象?的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB:如何使用 Mongoose 添加或更新子文档?
如何使用 MongoDB/Mongoose 中的先前值更新字段 [重复]
如何在 mongodb/mongoose 的嵌套数组中检查是不是存在并更新对象?
如何在 mongoose 和 mongodb 中更新嵌套模型
如何在 Mongoose 中更新/更新文档/数据? Passport MongoDB、Express、AngularJS、Nodejs