Узел JS: как исправить ошибку проверки приведения к массиву в mongoose - PullRequest
0 голосов
/ 20 января 2019

я пытаюсь сделать API вроде this

Я пытался добавить контроллер в массив, но у меня возникла проблема при выполнении ошибки.

ошибка вроде этой

Я искал решение от google и stackoverflow для последнего поста, но я запутался с этим.

Я очень благодарен за помощь

это мой код от контроллера

getCommunity: async (req, res, next) => {

    const { playerId } = req.params;
    const newCommunity = new Community(req.body);
    //Get Player
    const player = Player.findById(playerId);
    // Assign player as a part of community's player
    newCommunity.communityPlayer = player;
    // Save the community
    await newCommunity.save();
    // Add community to the player's array
    player.PlayerCommunities.push(newCommunity);
    // Save the playerCommunities
    await player.save();
    res.status(201).json(newCommunity)
}

это из моей модели плеера

const playerSchema = new Schema({
  playerName: String,
  playerImage: { type: String, data: Buffer },
  playerNumberPhone: {
    type: String,
    validate: {
      validator: function(v) {
        return /\d{3}-\d{4}-\d{4}/.test(v);
      },
      message: props => `${props.value} is not a valid phone number!`
    },
    required: [true, 'User phone number required']
  },
  playerAddress: String,
  PlayerCommunities: [{type: Schema.Types.ObjectId, ref: 'community'}]
});

это моё модельное сообщество

const communitySchema = new Schema({
    communityName: String,
    communityImage: {type: String, data: Buffer},
    communityPlayer: [{
        type: Schema.Types.ObjectId, 
        ref: 'player'}]
}, { usePushEach: true });

и это для моей конечной точки на самом деле я использую его

http://localhost:3000/player/:playerId/community

Ответы [ 2 ]

0 голосов
/ 20 января 2019

В модели сообщества свойство communityPlayer представляет собой массив.

Но в контроллере вы присваиваете немассивное значение.

Измените следующую строку вашего контроллера

newCommunity.communityPlayer = player;

К

newCommunity.communityPlayer.push(player);
0 голосов
/ 20 января 2019

неправильный способ присвоения newCommunity play массиву, поэтому он выдает ошибку.попробуй вот так

   getCommunity: async (req, res, next) => {

        const { playerId } = req.params;
        const newCommunity = new Community(req.body);
        //Get Player
        const player = Player.findById(playerId);
        // Assign player as a part of community's player
        newCommunity.communityPlayer.push(player); // here change your code like this
        // Save the community
        await newCommunity.save();
        // Add community to the player's array
        player.PlayerCommunities.push(newCommunity);
        // Save the playerCommunities
        await player.save();
        res.status(201).json(newCommunity)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...