Node.js mongoose uExpress,mongoose中运算符a数字字段的简便方法
我试图在mongoose中的数字字段中使用运算符。我做了一些搜索,找到了这个$inc选项。但现在我被困在增加或减少我的数字字段中Node.js mongoose uExpress,mongoose中运算符a数字字段的简便方法,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我试图在mongoose中的数字字段中使用运算符。我做了一些搜索,找到了这个$inc选项。但现在我被困在增加或减少我的数字字段中 let WalletSchemma = mongoose.Schema({ balance: { type : Number, default : 1, }, }: let UserSchema = mongoose.Schema({ wallet :{ type
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错误:
路径“wallet”处的值“-500”转换为ObjectId失败
因为用户架构在wallet字段中没有名为balance的字段。 您的数据库架构不支持您试图实现的功能。
不需要钱包模式,试试这个
let WalletSchemma = mongoose.Schema({
balance: {
type : Number,
default : 1,
},
}:
let UserSchema = mongoose.Schema({
wallet :WalletSchemma
};
因为用户架构在wallet字段中没有名为balance的字段。 您的数据库架构不支持您试图实现的功能。
不需要钱包模式,试试这个
let WalletSchemma = mongoose.Schema({
balance: {
type : Number,
default : 1,
},
}:
let UserSchema = mongoose.Schema({
wallet :WalletSchemma
};
您为
UserSchema
中的wallet字段指定了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
}
};
您为
UserSchema
中的wallet字段指定了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
}
};
原因是OP将ObjectId作为导致强制转换错误的字段类型,字段名称问题出现在该字段之后。原因是OP将ObjectId作为导致强制转换错误的字段类型,字段名称问题出现在该字段之后。