通过 sails 控制器更改多个 table
Change more than one table via sails controller
我希望我的风帆控制器执行这些步骤:
-将单词添加到单词 table
-获取创建的单词 ID 并将其与课程 ID 一起添加到不同的 table
module.exports = {
add: function(req,res){
var eng=req.param('english'),
pol=req.param('polish'),
lessonID=req.param('lessonID');
var wordID=this.create(eng,pol,lessonID);
console.log(wordID);
},
create: function(eng,pol,lessonID){
sails.models.word.create({
english:eng,
polish:pol})
.exec(function (word){
return word.id
});
}
};
我不确定如何将 wordID return 添加到函数中。现在 wordID 是 'undefined'。我尝试将 create 的声明更改为:
create(req,res)
然后 return
res.json(200, { id: word.id });
但它并没有改变任何东西。处理此类函数的正确方法是什么?
你误解了javascript的异步性质。
var wordID=this.create(eng,pol,lessonID);
console.log(wordID);
Console.log 将在前一个 line.The 数据库操作到那时尚未完成后立即执行。您需要更改 create
方法以接受在数据库操作完成后需要执行的回调。
add: function(req,res){
var eng=req.param('english'),
pol=req.param('polish'),
lessonID=req.param('lessonID');
this.create(eng,pol,lessonID, (wordID) => {
console.log(wordID);
return res.json({wordID});
});
},
create: function(eng,pol,lessonID, callback){
sails.models.word.create({
english:eng,
polish:pol})
.exec(function (word){
return callback(word.id);
});
}
我希望我的风帆控制器执行这些步骤:
-将单词添加到单词 table
-获取创建的单词 ID 并将其与课程 ID 一起添加到不同的 table
module.exports = {
add: function(req,res){
var eng=req.param('english'),
pol=req.param('polish'),
lessonID=req.param('lessonID');
var wordID=this.create(eng,pol,lessonID);
console.log(wordID);
},
create: function(eng,pol,lessonID){
sails.models.word.create({
english:eng,
polish:pol})
.exec(function (word){
return word.id
});
}
};
我不确定如何将 wordID return 添加到函数中。现在 wordID 是 'undefined'。我尝试将 create 的声明更改为:
create(req,res)
然后 return
res.json(200, { id: word.id });
但它并没有改变任何东西。处理此类函数的正确方法是什么?
你误解了javascript的异步性质。
var wordID=this.create(eng,pol,lessonID);
console.log(wordID);
Console.log 将在前一个 line.The 数据库操作到那时尚未完成后立即执行。您需要更改 create
方法以接受在数据库操作完成后需要执行的回调。
add: function(req,res){
var eng=req.param('english'),
pol=req.param('polish'),
lessonID=req.param('lessonID');
this.create(eng,pol,lessonID, (wordID) => {
console.log(wordID);
return res.json({wordID});
});
},
create: function(eng,pol,lessonID, callback){
sails.models.word.create({
english:eng,
polish:pol})
.exec(function (word){
return callback(word.id);
});
}