Javascript Node.js:req.object不是函数

Javascript Node.js:req.object不是函数,javascript,node.js,Javascript,Node.js,我在控制台中得到一个错误: // MERGE OBJECT = unsent columns are kept from old objects ! function merge_options(obj1, obj2) { const obj3 = {}; for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; } for (var attrname in obj2) { obj3[attrname] = obj2[

我在控制台中得到一个错误:

// MERGE OBJECT = unsent columns are kept from old objects !
function merge_options(obj1, obj2) {
  const obj3 = {};
  for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; }
  for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; }
  return obj3;
}
async function parseDBrequestMergeUniqueOne(req, dbName, keyName) {
  if (req.object.isNew()) {
    logger.info('object new');

    const query = new Parse.Query(dbName);
    query.equalTo(keyName, req.object(keyName));
    const objectOld = await query.first({ useMasterKey: true });
logger.info('object new');

    if (!req.object.get(keyName)) {
      throw new `Table: ${dbName} must have key ${keyName}.`;
    } else if (objectOld) {
      // update
      const oldo = JSON.parse(JSON.stringify(objectOld));
      const newo = JSON.parse(JSON.stringify(req.object));
      const merge2 = merge_options(oldo, newo);
      req.object.destroy({ useMasterKey: true }); // delete old object - we will replace it with a new one
      for (const attrname in merge2) {
        objectOld.set(attrname, merge2[attrname]);
      }
      objectOld.save(null, { useMasterKey: true });
     throw new Error("I'm Evil")
    }
  }
}


// / use generic function to class test, unique column = uniqKey
Parse.Cloud.beforeSave('Test1',  (request) => {
     return parseDBrequestMergeUniqueOne(request, 'Test1', 'title');
});
为什么?

这是工作


它的工作是query.equalTo(keyName,req.object(keyName))该怎么办?我打赌
如果(req.object.isNew())
导致错误。您确定
请求
具有
对象
属性吗?此云代码解析服务器。req.object-新的PFObject(在客户端创建,但未记录在数据库中)>>query.equalTo(keyName,req.object(keyName));请求从数据库获取数据(返回PFObject或null)检查列(KeyName)中是否有值为(req.object(KeyName))>>的条目您确定请求具有object属性吗?100%是
req.object-新的PFObject
,这非常严重地表明
req.object
不是一个函数,因此尝试将其作为一个函数执行是没有意义的。同样,应该
query.equalTo(keyName,req.object(keyName))考虑到您无法执行对象?
query.equalTo(keyName,req.object(keyName))该怎么办?我打赌
如果(req.object.isNew())
导致错误。您确定
请求
具有
对象
属性吗?此云代码解析服务器。req.object-新的PFObject(在客户端创建,但未记录在数据库中)>>query.equalTo(keyName,req.object(keyName));请求从数据库获取数据(返回PFObject或null)检查列(KeyName)中是否有值为(req.object(KeyName))>>的条目您确定请求具有object属性吗?100%是
req.object-新的PFObject
,这非常严重地表明
req.object
不是一个函数,因此尝试将其作为一个函数执行是没有意义的。同样,应该
query.equalTo(keyName,req.object(keyName))考虑到您无法执行对象?
2020-06-26T21:27:17.668Z - req.object is not a function
2020-06-26T21:27:17.661Z - beforeSave failed for Test1 for user YCjqkqOGO4:
Input: {"title":"test1","testPF":{"__type":"Pointer","className":"Test2","objectId":"AnxhevVa8s"},"title2":"8","title3":"1","testRL":{"__op":"AddRelation","objects":[{"__type":"Pointer","className":"Test2","objectId":"gOcJGkttpk"},{"__type":"Pointer","className":"Test2","objectId":"AnxhevVa8s"}]}}
Error: {"message":"request.object is not a function","code":141}
2020-06-26T21:27:17.651Z - object new
    // MERGE OBJECT = unsent columns are kept from old objects !
function merge_options(obj1, obj2) {
  const obj3 = {};
  for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; }
  for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; }
  return obj3;
}
async function parseDBrequestMergeUniqueOne(req, dbName, keyName) {
  if (req.object.isNew()) {
    logger.info('object new'+req.id);
    const query = new Parse.Query(dbName);
    query.equalTo(keyName, req.object.get(keyName));
    const objectOld = await query.first({ useMasterKey: true });

    if (!req.object.get(keyName)) {
      throw `Table: ${dbName} must have key ${keyName}.`;
    } else if (objectOld) {
      // update
      const oldo = JSON.parse(JSON.stringify(objectOld));
      const newo = JSON.parse(JSON.stringify(req.object));
      const merge2 = merge_options(oldo, newo);
      await req.object.destroy({ useMasterKey: true }); // delete old object - we will replace it with a new one
      for (const attrname in merge2) {
        objectOld.set(attrname, merge2[attrname]);
      }
      await objectOld.save(null, { useMasterKey: true });
     throw "I'm Evil"
    }
  }
}


// / use generic function to class test, unique column = uniqKey
Parse.Cloud.beforeSave('Test1', async (requ) => {
    await parseDBrequestMergeUniqueOne(requ, 'Test1', 'title');
});