【问题标题】:update always inserting last array value更新总是插入最后一个数组值
【发布时间】:2018-09-20 21:34:40
【问题描述】:

我是节点新手,搜索了很多找到解决方案,但不知道如何使用我的条件,如果有专业人士可以帮助我解决这个问题

Permissiontb.assembleAndInsert = async (ctx, cb) => {
for (let i = 0; i < ctx.req.body.view.length; i++) {
       console.log('outside i  '+i)
       await Process(ctx,i);
 }
};

 function  Process(ctx,i) {
let data={company_id:ctx.args.options.accessToken.userId,
       userid:ctx.req.body.userid,
       perpage:ctx.req.body.perpage[i].id,
       view:ctx.req.body.view[i],
       edit:ctx.req.body.edit[i],
       update:ctx.req.body.update[i],
       delete:ctx.req.body.delete[i]}

     console.log('inside '+i)
  return new Promise((resolve, reject) => {
    Permissiontb.find({where:{and: [{userid:ctx.req.body.userid}, {perpage:ctx.req.body.perpage[i].id}] }},function(err,result){
     if(err){
             var err = new Error('Some thing went wrong');
             err.statusCode = 444;
             console.log('err'+err)
             resolve(err)
     }else{ console.log(result.length)
         if(result.length>0){
           console.log(ctx.req.body.userid)  
           console.log('page id '+ctx.req.body.perpage[i].id)
           const pgid=ctx.req.body.perpage[i].id
           const vd=ctx.req.body.view[i]
           const ed=ctx.req.body.edit[i]
           const up=ctx.req.body.update[i]
           const del=ctx.req.body.delete[i]
            console.log(ctx.req.body.view[i])
            console.log(ctx.req.body.edit[i])
            console.log(ctx.req.body.update[i])
            console.log(ctx.req.body.delete[i])
            console.log('findinside update '+i)

              resolve(Permissiontb.update({where:{and: [{userid:ctx.req.body.userid}, {perpage:pgid}] }},{view:vd,edit:ed,update:up,delete:del}))

         }else{
             resolve(Permissiontb.create([data]))
         }

     }

    })

 })
}

现在的问题是控制台日志在 if(result.lenght>0) 条件下,例如:- console.log(ctx.req.body.view[i]) 获得正确的值,但是当更新方法总是插入最后一个数组值谁能告诉我我做错了什么

【问题讨论】:

    标签: node.js express loopbackjs strongloop


    【解决方案1】:

    最后我发现灵魂可能会帮助像我这样面临问题的其他人

    var async = require('async');
     module.exports = function(Permissiontb) {
    Permissiontb.assembleAndInsert = async (ctx, cb) => {
    
    for (let i = 0; i < ctx.req.body.view.length; i++) {
           await Process(ctx,i);
       }
     };
    Permissiontb.remoteMethod('assembleAndInsert', {
        http: {
          path: '/assembleAndInsert',
          verb: 'post',
         },
    accepts: [{ arg: 'data', type: 'object', http: { source: 'context' } },
    
    {"arg": "options", "type": "object", "http": "optionsFromRequest"}],
    returns: {
      arg: 'data',
      type: 'object',
    },
    });
    
    
    function  Process(ctx,i) {
      let data={company_id:ctx.args.options.accessToken.userId,
                userid:ctx.req.body.userid,
                perpage:ctx.req.body.perpage[i].id,
                view:ctx.req.body.view[i],
                 edit:ctx.req.body.edit[i],
                 update:ctx.req.body.update[i],
                delete:ctx.req.body.delete[i]}
         return new Promise((resolve, reject) => {
     resolve(Permissiontb.upsertWithWhere({userid:ctx.req.body.userid,perpage:ctx.req.body.perpage[i].id},data))
    
      })
     }
    

    问题是我使用 Permissiontb.upsertWithWhere(//im using where here->{userid:ctx.req.body.userid,perpage:ctx.req.body.perpage[i].id},data))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 2020-09-14
      • 2023-03-15
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      相关资源
      最近更新 更多