programing

mongoose 모델에서 중첩된 데이터를 쿼리하는 방법

firstcheck 2022. 7. 16. 08:37
반응형

mongoose 모델에서 중첩된 데이터를 쿼리하는 방법

MEVN 스택 백엔드와 Vuex를 사용하여 Vue.js 앱을 구축하려고 합니다.Mongoose에 네스트된 데이터를 쿼리하기 위해 대응하는 Express GET 루트를 요구하는 GET 요구를 사용하여 Vuex 액션핸들러를 설정합니다.

사용자 이름은 인수로 핸들러에 전달되어 GET 요청 URL에 파라미터로 추가됩니다.

  actions: {
    loadPosts: async (context, username) => {
      console.log(username)
      let uri = `http://localhost:4000/posts/currentuser?username=${username}`;
      const response = await axios.get(uri)
      context.commit('setPosts', response.data)
    }
  }

대응하는 Express 루트 쿼리activeUser.nameMongoose 모델의 중첩된 데이터를 나타냅니다.

postRoutes.route('/currentuser').get(function (req, res) {
  let params = {},
    username = req.query.activeUser.name
    if (username) {
       params.username = username
    }
    Post.find(params, function(err, posts){
    if(err){
      res.json(err);
    }
    else {
      res.json(posts);
    }
  });
});

아래는 Mongoose 모델입니다.activeUser.nameExpress 루트에 의해 쿼리된 네스트데이터를 나타냅니다.

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

let Post = new Schema({
  title: {
    type: String
  },
  body: {
    type: String,
  },
  activeUser: {
    name: {
      type: String
    }
  }
},{
    collection: 'posts'
});

module.exports = mongoose.model('Post', Post);

이 설정에서도 GET 루트는 액션핸들러에 응답을 반환하지 않는 것처럼 보입니다.더하는 줄 알았어username = req.query.activeUser.nameMongoose에서 네스트된 데이터를 쿼리하는 데 적절한 방법이지만, 분명히 그렇지 않습니다.Mongoose 모델에서 네스트된 데이터를 쿼리하기 위해 위의 Express 루트를 설정하는 방법에 대한 권장 사항이 있습니까?감사합니다!

name안에 있다activeuser따라서 다음과 같이 params 객체 변수를 구성해야 합니다.

postRoutes.route("/currentuser").get(function(req, res) {
  let params = {
    activeUser: {}
  };

  let username = req.query.activeUserName;

  if (username) {
    params.activeUser.name = username;
  }

  Post.find(params, function(err, posts) {
    if (err) {
      res.json(err);
    } else {
      res.json(posts);
    }
  });
});

activeUserName도 다음과 같은 쿼리 파라미터로 사용하였습니다./currentuser?activeUserName=JS_is_awesome18

언급URL : https://stackoverflow.com/questions/60108257/how-to-query-nested-data-in-mongoose-model

반응형