我正在尝试在SailsJS中构建一个简单的服务器并遇到问题:我在Sails中向服务发送POST请求,即使磁盘数据库中没有匹配的用户,我总是得到200响应
我的模特:
module.exports = {
attributes: {
name: { type: "string" },
lastName: { type: "string" }
}
};
我的路线档案:
module.exports.routes = {
'post /authTest' : 'UserController.testingAuth'
};
我的控制器:
module.exports = {
testingAuth : function(req, res) {
var temp = req.param("name");
sails.log(temp);
User.find({ name: 'testing123' }).exec(function(err, user) {
if (err) {
sails.log("inside err block");
return res.serverError(err);
}
sails.log("skipped err block");
return res.json(user);
})
}
};
我称之为服务的方式:
var testUser = { name: 'notMyName', lastName: 'myLastName' };
$http.post("http://localhost:1337/authTest", testUser);
然后在SailsJS控制台上我看到:
debug: notMyName
debug: skipped err block
我的本地数据库只有以下内容(.tmp中的localDiskDb.db):
{
"data": {
"passport": [],
"user": [
{
"name": "myName",
"lastName": "myLastName",
"createdAt": "2017-11-18T17:26:13.609Z",
"updatedAt": "2017-11-18T17:26:13.609Z",
"id": 1
}
]
},
// some schema stuff, irrelevant here
}
有人在这里看错了吗?该服务接收已发布的请求对象,搜索不在数据库中的用户,但仍然找到一个用户?
答案 0 :(得分:0)
检查出来:
User.find({ name: 'testing123' }).exec(function(err, user) {
if (err) {
sails.log("inside err block");
return res.serverError(err);
}
sails.log("skipped err block");
return res.json(user);
})
到
User.findOne({ name: 'testing123' }).exec(function(err, user) {
if (err) {
sails.log("inside err block");
return res.serverError(err);
} else if(user){
// user found here
return res.json(user);
} else {
//no user found
return res.json(null);
}
})
如果你想坚持find()
:
User.find({ name: 'testing123' }).exec(function(err, users) {
if (err) {
sails.log("inside err block");
return res.serverError(err);
} else if(users.length == 0) {
//users is empty array of results
return res.json(users)
} else {
//users is array of N records with criteria 'testing123' in field 'name'
return res.json(users);
}
})