Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js mongoose uExpress,mongoose中运算符a数字字段的简便方法_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js mongoose uExpress,mongoose中运算符a数字字段的简便方法

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

我试图在mongoose中的数字字段中使用运算符。我做了一些搜索,找到了这个$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错误:

路径“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作为导致强制转换错误的字段类型,字段名称问题出现在该字段之后。