服务器端首先是我的Api的工作原理
searchPosts(params) {
return Api().get('search', params);
},var postRouter = express.Router();
postRouter.get('/search', (req, res) => {
var db = req.db;
Post.find({ capacity: { $lte : req.body.capacity } }, function (error, q) {
if (error) { console.error(error); }
res.send({q})
})
})有了这个,在我的特快路线上,我就可以在/search上得到与身体有关的请求
{
"capacity":60
}举个例子,并且有一个正常工作的响应。
{
"q": [
{
"obj":"obj"
},
]
}网站端在我的.Vue文件中,我在按钮上的循环后调用这个函数
<v-btn
:disabled="!formIsValid"
flat
color="primary"
type="submit"
@click="searchPost">Search</v-btn> methods: {
async searchPost() {
const response = await PostsService.searchPosts({
capacity: this.form.capacity,
equipments: this.createObjectFromArray(this.form.equipments),
date: this.form.date,
time: this.form.time,
});
console.log(response);
this.availableList = response.q;
},在邮递员中,我正确地得到了一个q[]数组,里面有我所有的过滤对象,但是在铬request上,里面没有q
对于我的Api日志,我没有收到邮递员的错误,但是
message:
'Cast to number failed for value "undefined" at path "capacity" for model "Post"',
name: 'CastError',
...在网上进行真正的测试
有关信息,this.availableList在Data()中定义。
data() {
const defaultForm = Object.freeze({
capacity: 0,
date: new Date().toISOString().substr(0, 10),
time: null,
equipments: [],
});
return {
form: Object.assign({}, defaultForm),
datePicker: false,
hourMenu: false,
availableList: [],
allList: [],
defaultForm,
};
},发布于 2019-05-30 19:31:21
确保您的Post模型中的容量字段包括type: number。默认情况下,如果您没有在模型中显式地将类型声明为数字,则可能会假定您正在提交一个字符串值。
此外,由于您正在等待响应,您还必须确保数据分配等待响应返回。试试这个:
methods: {
async searchPost() {
const response = await PostsService.searchPosts({
capacity: this.form.capacity,
equipments: this.createObjectFromArray(this.form.equipments),
date: this.form.date,
time: this.form.time,
})
.then( response => {
console.log(response);
this.availableList = response.data.q;
}
)}注意,我没有使用response.q,而是使用了response.data.q。我现在不能测试这个,所以如果它不能工作,请尝试切换回response.q。
发布于 2019-05-30 20:18:31
我在我的vuejs文件中编辑了我的请求
async searchPost() {
const response = await PostsService.searchPosts({
capacity: this.form.capacity,
equipments: this.createObjectFromArray(this.form.equipments),
date: this.form.date,
time: this.form.time,
});
this.availableList = response.data;
},在我的阿皮里已经改变了
searchPosts(params) {
return Api().get('search', { params });
},我在正文中传递参数,而不是通过查询字符串来运行get命令,真是太愚蠢了。
因此,我已经相应地更新了get函数
postRouter.get('/search', (req, res) => {
var db = req.db;
Post.find({ capacity: { $lte : req.query.capacity } }, 'title description capacity equipments resa', function (error, q) {
if (error) { return res.status(500).send(error); }
res.send(q);
})
})若要在req.查询中查找我的查找参数,请不要再查询主体。
https://stackoverflow.com/questions/56383538
复制相似问题