我正在尝试在猫鼬的数字字段中使用运算符。我做了一些搜索并为此找到了$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
};