如何使用Sails JS

时间:2016-09-27 10:35:49

标签: sails.js sails-mongo

好的,我的一个控制器中有以下内容:

User.find({email: 'email@example.com'}).then(function (user) {

  user[0].field = 'new_value';
  user[0].field_2 = 'new_value';
  console.log(user[0], 'before saving');
  user[0].save();
  console.log(user[0], 'after saving');

});

如果我在此阶段控制user[0],我可以看到更新的字段。但是,更改未保存到db。如果我执行以下操作:

User.find({email: 'email@example.com'}).then(function (user) {

  user[0].field = 'new_value';
  user[0].field_2 = 'new_value';
  user[0].save();

  User.find(user[0].id).then(function (updateduser) {

    console.log(updateduser[0])

  });

});

updateduser没有更新的字段......为什么?在这种情况下我该怎么办?

3 个答案:

答案 0 :(得分:2)

实际上

user[0].save();

将返回您为User.find()。then();

所做的承诺

user [0] .save()是一个异步调用,因此即使用户[0]未在数据库中更新,下一次查找用户的调用也会运行。

所以将第二个find命令放在save()函数的then中,你将获得更新的用户。

user[0].save().then(function(err){

    User.find(user[0].id).then(function (updateduser) {
    console.log(updateduser[0])
    });  
}))

答案 1 :(得分:1)

为什么不使用updated()方法?

User.find({ email: 'email@example.com' })
    .then(function(user) {
        if (!user) return res.notFound();

        User.update({ eamil: 'eamil@example.com' }, {
                field: 'new_value',
                field_2: 'new_value'
            })
            .then(function(updated_user) {
                console.log(updated_user);
                return res.ok();
            })
            .catch(function(err) {
                sails.log.error(err);
                return res.serverError();
            });
    })
    .catch(function(err) {
        sails.log.error(err);
        return res.serverError();
    });

答案 2 :(得分:0)

首先,您只想更新一个用户数据,因为您正在使用用户[0](我认为)。

因此很容易使用findOne()。

简单代码

 User
    .findOne({email: 'email@example.com'})
    .exec(function(err,user){
       if(err || !user) {
         //handle  here
            }
       else {
             user.key1 = 'new_value';
             user.key2 = 'new_value';
             user.save(function(err){
                    if(err){
                               //handle error
                           }
                    console.log('updatedUser',user)  
               })
            }

  }) 

谢谢。