Mongoose 模式验证不适用于 Fawn

Posted

技术标签:

【中文标题】Mongoose 模式验证不适用于 Fawn【英文标题】:Mongoose schema validation is not working with Fawn 【发布时间】:2019-06-20 20:46:17 【问题描述】:

我正在开发一个 MEAN 应用程序,并尝试使用 FAWN 对 MongoDB 实现类似行为的事务。我正在使用猫鼬库。当我使用小鹿时,数据有点跳过模式条件,例如 min: 1 for sellPrice。但是,我也在运行中使用 useMongoose: true 。

    var mongoose = require('mongoose');
    var Fawn = require('fawn');    
    Fawn.init(mongoose);

    //Function code is as follow

        var task = Fawn.Task();
        let item = await Item.findById(req.params.id);

        task.update('items', _id: item._id, type: req.body.type, name: req.body.name, sku: req.body.sku, openingStock: req.body.openingStock, availableStock: req.body.availableStock, purchasePrice: req.body.purchasePrice, sellingPrice: req.body.sellingPrice, profitMargin: req.body.profitMargin, reorderLevel: req.body.reorderLevel, preferredVendor: req.body.preferredVendor);
        task.update('items', _id: item._id, sellingPrice: -50);//This line should fail because min value for sellingPrice is 1
        task.run( useMongoose: true )
            .then(function()res.json(item);)
            .catch(function(error)res.json(error: "message": error););

【问题讨论】:

【参考方案1】:

我在更新时遇到了许多类似的问题,但最后,以下方法奏效了:

try 
  await new Fawn.Task()
  .update('collection', 
                _id: mongoose.Types.ObjectId(req.params.id)  , 
                name: 'test', desc: 'description )
  .run(useMongoose: true);
 
catch(err)  console.log(err); 

【讨论】:

如何解决这个警告:(node:57487) DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead.

以上是关于Mongoose 模式验证不适用于 Fawn的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 验证不适用于引导模式

Mongoose:findOneAndUpdate 不适用于多种条件

save() 不适用于 mongoose.Schema

唯一索引不适用于 Mongoose / MongoDB

Mongoose Populate 不适用于 ObjectIds 数组

Mongoose不适用于Firebase(Express Api)主机