使用Feathersjs和Vue进行Mongoose验证

时间:2016-08-17 12:20:41

标签: node.js mongodb mongoose vue.js feathersjs

如何使用带有Feathers / Vue堆栈的Mongoose中的查询进行验证?这就是我所经历的。传递给feathers-mongoose服务的任何查询术语都必须在Vue模型中传递,以便运行查询,该查询过滤掉没有名称属性或根本没有该字段的返回项目。这是它不起作用时的样子。请注意' true'结果。enter image description here

  var vm = new Vue({
  el: '#app',
  data () {
      return {
          places:[]
      }
  },
  ready () {
        // Find all places
        placeService.find({
            query: {
               ** name: { $exists: true } **
            }
        }).then(page => {
          this.places = page.data
        })
    }
})

如果您在服务的“选项”中添加此选项,则查询最终会显示“&true;'显示在index.html中的{{i.name}}中。这个服务设置:

module.exports = function() {
  const app = this;

  const options = {
    Model: place,
    paginate: {
      default: 15,
      max: 30
    },
    // query: {
    //     name: { $exists: true },
    //     city: { $exists: true }
    // }
  };

  // Initialize our service with any options it requires
  app.use('/places', service(options));

另一个注意事项,如果您尝试使用

中的视图模型验证中构建的羽毛
$select: { name: { $exists: true }}

如下所示,或添加

{$exists:true}

到mongoose模型,你会得到与在羽毛 - 猫鼬选项中运行它相同的结果。

ready () {
       // Find all places
       placeService.find({
           query: {
               $select: { name: { $exists: true }}
           }
       }).then(page => {
         this.places = page.data
       })
   }

谢谢。

1 个答案:

答案 0 :(得分:0)

我通过根据http://mongoosejs.com/docs/api.html#schema_string_SchemaString-minlength

向mongoose模式添加minlength:1参数来解决此问题
const placeSchema = new Schema({
    name: {
      type: { String, minlength: 1},
      required: true
    }
  }); 

我仍然想知道这是否是最佳选择。感谢