使用 MassiveJS 实现 REST put/post 节省
Using MassiveJS for REST put/post saves
使用当前版本的 MassiveJS 并表达 API 调用。使用 SAVE 函数时,Massive 希望列名列表更新如下:
router.put('/:id', function(req, res, next) {
db.suppliers.save(
{
id: +req.params.id,
name: req.body.name,
email: req.body.email,
column1: req.body.column1,
column2: req.body.column2,
column3: req.body.column3,
manyOtherColumns: req.body.manyOtherColumns,
etc...
}, function (err, result) {
if (err) {
return next(err);
}
return res.status(200).json({
status: 'SUCCESS',
message: 'Supplier has been saved'
});
})
});
如您所见,随着列列表越来越长,这段代码变得越来越难以维护。所以我想知道是否有一种方法可以在一次调用中保存整个 req.body 假设 req.body 键值与数据库列名称匹配。这将节省大量时间并且更易于维护。
Massive 不是 ORM,因此保存 "object" 不是个好主意。如果你想更新一些东西,你可以直接使用 db.update
并传入你想要更新的值以及行的 ID。这将为您进行部分更新。
正如我在评论中提到的,打开一个 REST 端点来更新用户通过 POST 发送的任何内容可能不是一个好主意,即使您确实信任您的用户。
最后:如果您只想传递表单 post,您可以:
router.put('/:id', function(req, res, next) {
var supplier = {
id: req.params.id;
};
supplier = _.extend(supplier, req.params.body);
db.suppliers.save(
supplier
, function (err, result) {
if (err) {
return next(err);
}
return res.status(200).json({
status: 'SUCCESS',
message: 'Supplier has been saved'
});
})
});
使用当前版本的 MassiveJS 并表达 API 调用。使用 SAVE 函数时,Massive 希望列名列表更新如下:
router.put('/:id', function(req, res, next) {
db.suppliers.save(
{
id: +req.params.id,
name: req.body.name,
email: req.body.email,
column1: req.body.column1,
column2: req.body.column2,
column3: req.body.column3,
manyOtherColumns: req.body.manyOtherColumns,
etc...
}, function (err, result) {
if (err) {
return next(err);
}
return res.status(200).json({
status: 'SUCCESS',
message: 'Supplier has been saved'
});
})
});
如您所见,随着列列表越来越长,这段代码变得越来越难以维护。所以我想知道是否有一种方法可以在一次调用中保存整个 req.body 假设 req.body 键值与数据库列名称匹配。这将节省大量时间并且更易于维护。
Massive 不是 ORM,因此保存 "object" 不是个好主意。如果你想更新一些东西,你可以直接使用 db.update
并传入你想要更新的值以及行的 ID。这将为您进行部分更新。
正如我在评论中提到的,打开一个 REST 端点来更新用户通过 POST 发送的任何内容可能不是一个好主意,即使您确实信任您的用户。
最后:如果您只想传递表单 post,您可以:
router.put('/:id', function(req, res, next) {
var supplier = {
id: req.params.id;
};
supplier = _.extend(supplier, req.params.body);
db.suppliers.save(
supplier
, function (err, result) {
if (err) {
return next(err);
}
return res.status(200).json({
status: 'SUCCESS',
message: 'Supplier has been saved'
});
})
});