首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型方法在sails js中不起作用。

模型方法在sails js中不起作用。
EN

Stack Overflow用户
提问于 2018-03-28 20:50:33
回答 1查看 497关注 0票数 0

我使用的是sails v0.12,我的MySql关系数据库中有不同的模型,但值得关注的是这两个模型: 1.用户2.约会

我想将apptCustomer和apptProvider数据添加到约会模型中,但数据库中的值为空

我的用户模型是:

代码语言:javascript
复制
module.exports = {

  attributes: {
    name: {
      type: "string",
    },
    email: {
      type: "email",
      required: true,
      unique: true
    },
    contact_no:{
      type: "int",
      maxLength: 15,
      //required: true,
    },
    address: {
      type:"longtext",
     //required: true,
    },
    userId:{
      type: "string",
      primaryKey: true,
      unique:true
    },
    gtoken:{
      type: "string"
    },
    provider:{
     type:"string"
    },
    cancel:{
      type: "boolean",
   //   required: true
    },
    business_name:{
      type:"string",
      unique:true
    },
    business_category:{
      type:"string"
    },
    roles:{                                                 // Many to Many = User <-> User-role <-> Role 
      collection:'Role',
      through:'userrole',
    },
    services:{
      collection:'Service',
      through:'serviceprovider',                          // Many to Many = User (provider) <-> Service-provider <-> Service
    },
    schedules:{                                             // One to One = User (provider) - Schedule
      collection:'Schedule',
      via:'owner',
    },
    providerAppointments:{                                       // One to Many = User(customer) - multiple Appointments
      collection:'Appointment',
      via:'appProvider',
    },
    customerAppointments:{                                      
      collection:'Appointment',                                    // One to Many = User(provider) - multiple Appointments
      via:'appCustomer'
    }

  }

};

我的约会模型是

代码语言:javascript
复制
module.exports = {

  attributes: {
    appointment_id:{
      type:'int',
      primaryKey: true,
      autoIncrement:true
    },
    appointmentDate: {
      type: 'datetime',
      required: true,
    },
    start_time: {
      type: 'string',
      required: true,
    },
    end_time: {
      type: 'string',
    },
    status: {
      type: 'string',
      enum: ['booked', 'canceled']
    },
    appProvider: {
      model: 'user',
    },
    appCustomer:{
      model: 'user',
    },
    serviceAppointment: {
      model: 'service',
    }
  }
};

我的Model方法如下

代码语言:javascript
复制
 Appointment.findOrCreate({appointmentDate:req.body.values.appointmentDate, start_time:req.body.values.start_time, end_time:req.body.end_time, status: status},{appointmentDate:req.body.values.appointmentDate, start_time:req.body.values.start_time, end_time:req.body.end_time, status: status})
                    .exec(function apptCreated(err,appt){
                        if(err) { sails.log('err',err)}

                        Service.findOne({ service_id : req.body.values.selected_service})
                                .exec(function(err,service){
                                    service.serviceAppointments.add(appt);
                                    service.save(function(err,result){
                                        if(err) { sails.log(err)}
                                    })
                                }), 
                        User.find({userId: req.body.businessId})  
                            .populate('roles')
                            .exec(function(err,provider){
                                _.map( provider.roles, role => { // Problem lies here .. this method is not working
                                  if(role.role_id==1){
                                    provider.providerAppointments.add(appt);
                                    provider.save(function(err, result){
                                        if(err) { sails.log(err)}
                                        sails.log('appointment added to provider')
                                    })
                                }  
                            })
                        }),                  
                        //Appointment adding to Customer
                        User.find({userId: req.body.customerId})  
                            .populate('roles')
                            .exec(function(err,customer){
                                _.map( customer.roles, role => { // Problem lies here... this method is not working
                                  if(role.role_id==2){
                                    customer.customerAppointments.add(appt)
                                    customer.save(function(err, result){
                                        if(err) { sails.log(err)}
                                        sails.log('appointment added to customer')
                                    })
                                }  
                            })
                        }),

                        // Adding contact to customer 

                        User.update({userId: req.body.customerId},{ contact_no: req.body.values.contact_no}) // this method works fine
                            .exec(function userUpdated(err, user){
                                if(err) { return sails.log(err)}
                                sails.log('contact number updated',user);
                        })

                })
EN

回答 1

Stack Overflow用户

发布于 2018-03-28 21:30:50

据我所知,在调用provider.providerAppointments.add的那一刻,provider.providerAppointments仍然只是一个常规属性--可能是一个I数组。

我认为你需要在你的User.find中添加.populate('providerAppointments') ...如果您这样做了,那么provider.providerAppointments应该有一个按照您期望的方式工作的.add方法。

当然,如果这是错误的来源,我会期望得到一个非常清晰的错误消息,比如provider.providerAppointments.add is not a function或类似的消息。但是尝试添加填充,看看它是否能解决您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49535057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档