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');
});