[英]Loopback findOrCreate creates new records even if there is an existing record
根據我對回送文檔的理解,Persistedmodel.findOrCreate應該根據查詢找到一個模型並返回它,或者如果該模型不存在,則在數據庫中創建一個新條目。
我注意到的是,無論是否存在現有條目,它都會創建一個新條目。
不知道我在想什么。 這是我的代碼:
團隊-joined.json
{
"name": "teamsJoined",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"teamID": {
"type": "string",
"required": true
},
"playerID":{
"type":"string",
"required":true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
團隊-joined.js
let queryThatWorks = {where:{
and: [
{teamID: teamID}
]
}
};
let query = {where:{
and: [
{teamID: teamID},
{playerID: req.currentUser.id},
],
}
};
let joinTeamsData = {
teamID: teamID,
playerID: req.currentUser.id,
};
console.log(query.where,'query');
teamsJoined.findOrCreate(query, joinTeamsData,
function(err, data, created) {
console.log(data,created);
});
當我多次校准API時,這就是我得到的
{ and:
[ { teamID: 'bf36e0-93a5-11e8-a8f4-9d86f4dd79ee' },
{ playerID: '5b20887bb6563419505c4590' } ] } 'query'
{ teamID: 'bf36e0-93a5-11e8-a8f4-9d86f4dd79ee',
playerID: '5b20887bb6563419505c4590',
id: 5b61798534fa410d2b1d900a } 'data'
true 'created'
{ and:
[ { teamID: 'bf36e0-93a5-11e8-a8f4-9d86f4dd79ee' },
{ playerID: '5b20887bb6563419505c4590' } ] } 'query'
{ teamID: 'bf36e0-93a5-11e8-a8f4-9d86f4dd79ee',
playerID: '5b20887bb6563419505c4590',
id: 5b61798634fa410d2b1d900b } 'data'
true 'created'
我希望它為創建的結果返回false並僅返回現有數據。 當我使用代碼示例中的“ queryThatWorks”查詢時,此方法工作正常。
您無需在where子句中使用and
運算符。 參見findOrCreate 。
{ where: { teamID: teamID, playerID: req.currentUser.id } }
您可以像這樣將數據包括到過濾器中:
{ where: joinTeamsData }
要在return語句中返回特定字段,可以在查詢中使用fields選項。
最后,嘗試以下操作:
let data = {
teamID: teamID,
playerID: req.currentUser.id,
};
let filter = { where: data };
teamsJoined.findOrCreate(filter, data,
function(err, instance, created) {
console.log(instance, created);
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.