Простой способ для оператора числового поля в mongoose _ Express, mongoose - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь использовать оператор в поле Number в 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:

Ошибка приведения к ObjectId для значения "-500" по пути "кошелек"

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы указали type: mongoose.Schema.ObjectId для поля кошелька в UserSchema и пытаетесь присвоить Number ObjectId, что приводит к ошибке Cast.

Вам нужно вставить WalletSchema в UserSchema, тогда только вы можете обновить wallet.balance.

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

const UserSchema = new mongoose.Schema({
     wallet: {
         type: WalletSchema
    }
};
0 голосов
/ 12 сентября 2018

Поскольку в пользовательской схеме нет поля с именем balance в поле кошелька. Ваша схема базы данных не поддерживает функциональность, которую вы пытаетесь достичь.

Не используйте схему кошелька, попробуйте

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

let UserSchema = mongoose.Schema({
     wallet     :WalletSchemma
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...