我试图在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((获取