使用 Sails 和 Waterline 编辑现有数据库条目时遇到问题
Having issues editing an existing DB entry with Sails and Waterline
我将 SailsJS 用作 API,Waterline 连接到 MongoDB。我正在尝试将一个端点放在一起来编辑现有的数据库条目,但似乎无法使其正常工作,我在寻找原因时遇到了瓶颈。
我的路线:
'post /edit/safety/:id': {
controller: 'SafetyController',
action: 'editSafety'
},
我的控制器功能:
editSafety: function editSafety(req, res) {
var id = req.params.id;
Safety.findOneById(id).then((err, safety) => {
if (err) {
res.send(500, err);
return;
}
if (!safety) {
res.send(404, err);
return;
}
safety.title = req.body.title;
safety.description = req.body.description;
safety.status = req.body.status;
safety.save((err, updatedSafety) => {
if (err) {
re.send(500, err);
return;
}
res.send(200, updatedSafety);
});
});
},
任何正确方向的推动都将不胜感激。
我不认识 Safety.findOneById
方法 - 这是您定制的东西吗?如果不是,那可能是你的问题。
尝试将其交换为:
Safety.findOne(id)
或
Safety.findOne({id: id})
请注意,如果记录存在,返回的对象将是一个模型实例,否则 undefined
。如果您决定使用 Safety.find
,那么返回值将是一个包含所有匹配查询的模型的数组。
看起来主要问题是转置响应和错误对象。它已成功完成查询,但将其加载到 err 对象中,该对象被捕获并抛出 500 错误。所以我更改了它并在其他几个地方进行了简化。
editSafety: function editSafety(req, res) {
var id = req.params.id;
Safety.findOne(id).then((response, err) => {
var safety = response;
if (err) {
res.send(500, err);
return;
}
if (!response) {
res.send(404, err);
return;
}
safety.title = req.body.title;
safety.description = req.body.description;
safety.status = req.body.status;
Safety.update({
id: id
}, safety)
.then((result) => {
res.json(200, 'Ok!');
})
.catch((err) => {
sails.log.error('SafetyController.editSafety', err);
})
});
},
我将 SailsJS 用作 API,Waterline 连接到 MongoDB。我正在尝试将一个端点放在一起来编辑现有的数据库条目,但似乎无法使其正常工作,我在寻找原因时遇到了瓶颈。
我的路线:
'post /edit/safety/:id': {
controller: 'SafetyController',
action: 'editSafety'
},
我的控制器功能:
editSafety: function editSafety(req, res) {
var id = req.params.id;
Safety.findOneById(id).then((err, safety) => {
if (err) {
res.send(500, err);
return;
}
if (!safety) {
res.send(404, err);
return;
}
safety.title = req.body.title;
safety.description = req.body.description;
safety.status = req.body.status;
safety.save((err, updatedSafety) => {
if (err) {
re.send(500, err);
return;
}
res.send(200, updatedSafety);
});
});
},
任何正确方向的推动都将不胜感激。
我不认识 Safety.findOneById
方法 - 这是您定制的东西吗?如果不是,那可能是你的问题。
尝试将其交换为:
Safety.findOne(id)
或
Safety.findOne({id: id})
请注意,如果记录存在,返回的对象将是一个模型实例,否则 undefined
。如果您决定使用 Safety.find
,那么返回值将是一个包含所有匹配查询的模型的数组。
看起来主要问题是转置响应和错误对象。它已成功完成查询,但将其加载到 err 对象中,该对象被捕获并抛出 500 错误。所以我更改了它并在其他几个地方进行了简化。
editSafety: function editSafety(req, res) {
var id = req.params.id;
Safety.findOne(id).then((response, err) => {
var safety = response;
if (err) {
res.send(500, err);
return;
}
if (!response) {
res.send(404, err);
return;
}
safety.title = req.body.title;
safety.description = req.body.description;
safety.status = req.body.status;
Safety.update({
id: id
}, safety)
.then((result) => {
res.json(200, 'Ok!');
})
.catch((err) => {
sails.log.error('SafetyController.editSafety', err);
})
});
},