我正在使用猫鼬版本5.2.5
,这是我的订单的示例模型
....
let PlaceOrderSchema = new mongoose.Schema({
any: {}
}, { strict: false },
{ timestamps: { updatedAt: 'last_updated', createdAt: 'created' });
我在主脚本中使用以上模型以及猫鼬save
和findOneAndUpdate
。
在生产系统中,我们看到许多文档在保存文档中缺少last_updated
键。
以下是我们的主脚本中猫鼬save
方法和findOneAndUpdate
的示例代码。我们看到有些文档具有updated_at
键,但很少有文档没有它保存文档时
let orderModel = require('./orderModel');
let newOrder = {
order_no: 1234
};
//save usage code
(new Order(newOrder).save({lean: true}, ()=> {
//do...something
}));
//findOneAndUpdate usage Code
let orderNo = 123
OrderModel.findOneAndUpdate({ order_no: orderNo },
{
$set: { items: [{product_id: 'abc', quantity: 1}] },
},
{ new: true, upsert: true },
(err, res) => {
//do_something
});
任何人都可以分享为什么没有updated_at
时保存很少的文档吗?
答案 0 :(得分:1)
在<div class="gallery">
<div class="textfield large2">
<div class="photoframe"></div>
</div>
<div class="textfield small">
<div class="photoframe"></div>
</div>
<div class="textfield small">
<div class="photoframe"></div>
</div>
<div class="textfield large">
<div class="photoframe"></div>
</div>
<div class="textfield medium">
<div class="photoframe"></div>
</div>
</div>
操作期间,您需要使用选项setDefaultsOnInsert: true
。
默认情况下,猫鼬仅在创建新的时应用默认设置 文献。如果使用update()和 findOneAndUpdate()。但是,猫鼬4.x可让您选择加入 使用setDefaultsOnInsert选项的行为。
update