如何在猫鼬模型中查询嵌套数据

JS_is_awesome18

我正在尝试使用MEVN堆栈后端和Vuex构建Vue.js应用程序。我正在使用GET请求配置我的Vuex动作处理程序,该请求会提示相应的Express GET路由以查询嵌套在Mongoose中的数据。

用户名作为参数传递到处理程序中,并作为参数附加到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.name,代表猫鼬模型中的嵌套数据:

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.name表示Express路由查询的嵌套数据:

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.name快速路由将是查询Mongoose中嵌套数据的正确方法,但显然不是。关于如何配置上述Express路由以查询Mongoose模型中的嵌套数据的任何建议?谢谢!

苏莱曼·萨

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章