express / nodejs:在post请求中停止重复

时间:2017-07-18 07:29:05

标签: javascript node.js express

如果对象已经存在,我应该怎么做才能阻止帖子请求发布新对象? 我已经粘贴了我的代码和json对象。我已经尝试了next();但它不起作用,无论如何都会创建一个带有其他id的重复对象。我正在使用before beforePostTransaction函数来检查产品是否已存在。该请求包含

的id和商店ID

index.js

const Transaction = require('./transactions/TransactionModel');
const TransactionCTL = require('./transactions/TransactionController');
Transaction.before('post', TransactionCTL.beforePostTransaction);
Transaction.register(router, '/transactions');

TransactionController.js

const beforePostTransaction = (req, res, next) => {
var id = req.body.id;
Transaction.findById(
    id, 
    (err, data)=>{
        if (!data){
            next();
        }
        else{

            var store = data.store;
            store = JSON.stringify(store);
            store = store.replace(/\"/g, "");
            if(store !== req.body.store){ //update the whole object
                next();
            }
            else{
            //do what?
            }

        }
    });
    res.sendStatus(409);
}

json对象

[{
    "_id": "596db06849822a13c97ba3f9",
    "store": "596b088131ea400490897c50"
}]

1 个答案:

答案 0 :(得分:0)

不确定你的型号是什么。但如果它是猫鼬,你可以使用方法

.findOneAndUpdate(query,
        update,
        {upsert: true},
        function (error, result) {
          if (!error) { //if you need to do something else
          }
        });

更新是您的对象。如果不存在,它将创建新项目,如果存在则更新它。