如何使用Sailsreq.param函数来检索和更新记录



我试图在sails 1.0中徒劳地使用req.param函数。我无法缝合以检索记录值并将其预加载到编辑表单上,以便更新记录。下面是我的代码片段。

路由

'GET /organization/:id': { action: 'organization/view-organization-edit' },'PUT /api/v1/organization/edit-organization/': { action: 'organization/edit-organization' },

下面是我在ajax表单上触发操作的地方

<td>
<div class="col-sm-12">
<span class="float-sm-left">
<a style="width: 70px" class="btn btn-sm btn-outline-info" href="/organization/<%= organization.id %>">Edit </a>
</span>

<form class= "d-inline" action="" method="post">
<input style="width: 70px" type="submit" value="Delete" class="btn btn-danger">
</form>                             
</div> 
......

这给了我urlhttp://localhost:1337/organization/1

查看编辑操作

module.exports = {

friendlyName: 'View organization edit',

description: 'Display "Organization edit" page.',

exits: {
success: {
viewTemplatePath: 'pages/organization/edit-organization'
}
},

fn: async function (req,res) {
console.log(this.req.id);
var organization = await Organization.findOne({ id:this.req.id });// **here is where the error occurs**
// Respond with view.
return {
organizationData: organization, 
//id:organization.id
};
}

};

编辑操作


friendlyName: 'Update organization',


description: 'Update organization.',

inputs: {
Org_Name: {
type: 'string'
},

Org_Level:  {
type: 'string'        
}

},  

exits: {
success: {
description: "Successful",
},
},


fn: async function ({Org_Name,Org_Level}) {
console.log("We are in update function");
//var org_name= req.body.Org_Name;
//var org_level=req.body.Org_Level;
//var id= req.param.id;

console.log(this.req.me.Org_Name);
console.log(this.req.me.Org_Level);
console.log(this.req.me.id );
//console.log(id);
var valuesToSet = {Org_Name,Org_Level};
await Organization.updateOne({id: this.req.me.id })
.set(valuesToSet);
/* Organization.update({id},{org_name,org_level}).exec(function(err){
if(err){
res.send(500, {err: "some error occured"});
}


});*/

return true;  
}


};

编辑页面

<div id="account-overview" v-cloak>
<div class="content-wrapper">
<div class="card">
<div class="card-body">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/organization" >Organizations</a></li>
<li class="breadcrumb-item active">Edit</li>
</ol>                
</div>
<h5>Updating: <%= organizationData.Org_Name%></h5>
<ajax-form method= "put" action="editOrganization" :form-data="formData" >
<div class="row">
<div class="col-sm-6">                   
<div class="form-group">
<label for="Org_Name">Church Organization</label>
<input class="form-control" id="Org_Name" name="Org_Name" type="text"  :class="[formErrors.Org_Name ? 'is-invalid' : '']" Value=" <%= organizationData.Org_Name%>" autocomplete="name" >
<div class="invalid-feedback" v-if="formErrors.Org_Name">Please enter your church Organization.</div>
</div>
<div class="form-group">
<label for="Org_Level">Organization level</label>
<input class="form-control" id="Org_Level" name="Org_Level" type="text"  :class="[formErrors.Org_Level ? 'is-invalid' : '']"  Value=" <%= organizationData.Org_Level%>" autocomplete="name">
<div class="invalid-feedback" v-if="formErrors.Org_Level"> Please enter your Organization Level</div>
</div>
<div class="row">
<div class="col-sm-6">
<cloud-error v-if="cloudError === 'emailAlreadyInUse'">There is already an Organization using that Name.</cloud-error>
<cloud-error v-if="cloudError"></cloud-error>
</div>
<div class="col-sm-6">
<div class="form-group text-right">
<a class="btn btn-outline-info" href="/Organization">Cancel</a>
<ajax-button type="submit"  class="btn btn-dark">Submit</ajax-button>
</div>
</div>
</div>
</div>
</div> 
</ajax-form>

</div>```


In async function you can define req and use it or you can just say this.req.param('id');
fn: async function ({Org_Name,Org_Level}) {
let req = this.req;
let res = this.res;
console.log("We are in update function");
//var org_name= req.body.Org_Name;
//var org_level=req.body.Org_Level;
//var id= req.param.id;

console.log(this.req.me.Org_Name);
console.log(this.req.me.Org_Level);
console.log(this.req.me.id );
//console.log(id);
var valuesToSet = {Org_Name,Org_Level};
await Organization.updateOne({id: this.req.me.id })
.set(valuesToSet);
/* Organization.update({id},{org_name,org_level}).exec(function(err){
if(err){
res.send(500, {err: "some error occured"});
}


});*/

return true;  
}


};

记录req变量并检查是否有一个名为"的对象;身体;以及";params";。如果是,则需要使用req.body或req.allParams((获取

最新更新