运算符的简单方法 猫鼬中的数字字段 _ 快递,猫鼬



我正在尝试在猫鼬的数字字段中使用运算符。我做了一些搜索并为此找到了$inc选项。但现在我卡在增加或减少我的数字字段中。

let WalletSchemma = mongoose.Schema({
balance: {
type      : Number,
default   : 1,
},
}:
let UserSchema = mongoose.Schema({
wallet     :{
type     : mongoose.Schema.ObjectId,
ref      : 'Wallet',
unique   : true
},
};

这是我的更新查询:

[err, wallet] = await to(User.findOneAndUpdate(
{_id:req.user._id},
{
$inc : {'wallet.balance': -500}
}
));

MongoDB错误:

在路径"钱包"处为值"-500"强制转换为对象 ID 失败

您已经为UserSchema中的钱包字段提供了type: mongoose.Schema.ObjectId,并尝试为ObjectId分配一个Number,这会导致此处的转换错误。

您需要将WalletSchema嵌入到UserSchema然后只有您可以更新wallet.balance

const WalletSchemma = new mongoose.Schema({
balance: {
type: Number,
default: 1,
}
}:
const UserSchema = new mongoose.Schema({
wallet: {
type: WalletSchema
}
};

因为用户架构在钱包字段中没有名为余额的字段。 数据库架构不支持您尝试实现的功能。

不需要钱包架构,而是尝试这个

let WalletSchemma = mongoose.Schema({
balance: {
type      : Number,
default   : 1,
},
}:
let UserSchema = mongoose.Schema({
wallet     :WalletSchemma
};

最新更新