通过 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);

   });
}