首页 > 解决方案 > MongoDB 检查文档/记录是否存在

问题描述

我试图将 .find({}) 与 mongogb 一起使用,不幸的是它没有给我我期望的响应,我不确定如何检查文档是否存在?我想做的是说:

如果文档确实存在,则执行某些操作.. IE 发回响应,但如果文档不存在,则创建文档,

不幸的是,我知道一个文档不存在,但它必须使用“if (docs)”来获取错误的内容,但是当我将其更改为其他内容时,它总是会创建记录!?

编码:

addRefund : (refundCalc, callback) => {
    order_number = refundCalc.refundDetails.customer_details.order.order_number;
    dbconnect.createConnection()
    refund.find({order_number: order_number}, (err, docs) => {
        if (docs) {
            console.log('docss!!!!!!!!!!!!!' + JSON.stringify(docs));
            console.log('calling within error!!!!!!')
            let notStored = {"refundDocStored" : "False"}
            callback(notStored)
            dbconnect.closeConnection();
        }
        else {
            refund.create(refundCalc).then((refunddoc) => {
               let filestored = {"refundDocStored" : "True"}                              
               dbconnect.closeConnection();
               callback(filestored)
            }).catch((err)=> {
                console.log(err);
                dbconnect.closeConnection();
            })
        }
    })
},

架构:

const refundSchema = new Schema({
domain : { type: String},
refundDetails : {
    customer_details : [],
    refund : {
        shipping : {
            amount : { type: Number},
            tax : {type : Number},
            maximum_refundable : {type : Number}
        },
        refund_line_items: [],
        transactions: []   
    }
}

});

订单存储在refundDetails中,如下所示:

"refundDetails":{"customer_details":{"order":{"order_number":1021

它似乎对我不起作用!如果存在文件,我似乎无法真正证明它确实存在?

任何帮助都会很棒,谢谢!

标签: javascriptmongodb

解决方案


您使用了错误的搜索查询。您正在搜索 order_number ,它是另一个对象内的对象的属性。您必须在查询中引用 order_number 完整路径,即{"refundCalc.refundDetails.customer_details.order.order_number" : order_number}

addRefund : (refundCalc, callback) => {
    order_number = refundCalc.refundDetails.customer_details.order.order_number;
    dbconnect.createConnection()
    refund.find({"refundCalc.refundDetails.customer_details.order.order_number": order_number}, (err, docs) => {
        if (docs) {
            console.log('docss!!!!!!!!!!!!!' + JSON.stringify(docs));
            console.log('calling within error!!!!!!')
            let notStored = {"refundDocStored" : "False"}
            callback(notStored)
            dbconnect.closeConnection();
        }
        else {
            refund.create(refundCalc).then((refunddoc) => {
               let filestored = {"refundDocStored" : "True"}                              
               dbconnect.closeConnection();
               callback(filestored)
            }).catch((err)=> {
                console.log(err);
                dbconnect.closeConnection();
            })
        }
    })
},

推荐阅读