Javascript 使用查找中的猫鼬字段

Javascript 使用查找中的猫鼬字段,javascript,node.js,mongodb,object,mongoose,Javascript,Node.js,Mongodb,Object,Mongoose,所以我到处寻找,试图找出这个问题,我想我只是错过了一些简单的东西……但我不能完全弄清楚 使用Mongoose,我正在查找一个特定的文档,当找到该文档时,我想看看senderDel字段是否设置为true,然后我将执行删除操作。如果设置为false,则执行更新 代码: console.log(res)返回: 我本以为可以用res.senderDel引用senderDel字段?为什么res.senderDel被认为是未定义的,我如何修改它使其工作?非常感谢您的帮助 编辑:添加我的架构: var mes

所以我到处寻找,试图找出这个问题,我想我只是错过了一些简单的东西……但我不能完全弄清楚

使用Mongoose,我正在查找一个特定的文档,当找到该文档时,我想看看senderDel字段是否设置为true,然后我将执行删除操作。如果设置为false,则执行更新

代码:

console.log(res)返回:

我本以为可以用res.senderDel引用senderDel字段?为什么res.senderDel被认为是未定义的,我如何修改它使其工作?非常感谢您的帮助

编辑:添加我的架构:

var messageSchema = new Schema({
    sender: {type: ObjectId, ref: 'User'},
    senderName: String,
    receiver: {type: ObjectId, ref: 'User'},
    receiverName: String,
    subject: String,
    body: String,
    sentOn: {type: String, default: moment().format()},
    read: {type: Boolean, default: false},
    senderDel: {type: Boolean, default: false},
    receiverDel: {type: Boolean, default: false}
});

module.exports = mongoose.model('Message', messageSchema);

model.find
函数返回文档数组,而不是单个文档。如果要查找单个文档,请使用
model.findOne
model.findById

PMessage.delete = function(msgId, callback)
{
    Message.findById(msgId, function(e, res){
        if (res){
            console.log(res);
            if (res.senderDel == true){
                console.log("sender deleted...call message remove");
                Message.remove({_id: msgId}, callback);
            } else {
                console.log("res.senderDel is not true");
                Message.findByIdAndUpdate(msgId, {$set: {receiverDel: true}}, callback);
            }
        } else {
            console.log("error: " + e); 
            callback; 
        }
    });
};

你的电脑里有
senderDel
吗?有。我会编辑这篇文章以反映我的模式。哦,你完全正确!使用res[0],senderDel也修复了它。谢谢你的帮助,非常感谢。我将使用您的修复=)
var messageSchema = new Schema({
    sender: {type: ObjectId, ref: 'User'},
    senderName: String,
    receiver: {type: ObjectId, ref: 'User'},
    receiverName: String,
    subject: String,
    body: String,
    sentOn: {type: String, default: moment().format()},
    read: {type: Boolean, default: false},
    senderDel: {type: Boolean, default: false},
    receiverDel: {type: Boolean, default: false}
});

module.exports = mongoose.model('Message', messageSchema);
PMessage.delete = function(msgId, callback)
{
    Message.findById(msgId, function(e, res){
        if (res){
            console.log(res);
            if (res.senderDel == true){
                console.log("sender deleted...call message remove");
                Message.remove({_id: msgId}, callback);
            } else {
                console.log("res.senderDel is not true");
                Message.findByIdAndUpdate(msgId, {$set: {receiverDel: true}}, callback);
            }
        } else {
            console.log("error: " + e); 
            callback; 
        }
    });
};