您好,
我在数据库中保存数据时遇到问题,我找不到问题所在。QueryBuilder
forAnd-, Or- and OrAnd-Select
是一样的。. 我QueryBuilder
连续编写了 in 代码And-select
,Or-select
并且OrAnd-Select
按照这个确切的顺序。将数据保存在NosqlDb
作品中仅用于And- and OR-select
.但
OrAnd-select
保存失败。如图所示,您可以看到数据库中的数据没有保存。数据库中的数据User_DataDb
保存成功。我将不胜感激任何帮助!先感谢您。
我收到此错误:
EXCEPTION: Uncaught (in promise): Error: Current operation has not been finished.
withLock@http://localhost:3000/main.bundle.js:21238:31 [angular]
_save@http://localhost:3000/main.bundle.js:11260:12 [angular]
update@http://localhost:3000/main.bundle.js:11097:12 [angular]
update@http://localhost:3000/main.bundle.js:12956:14 [angular]
ac_main</NoSqlComponent.prototype.submit/promise</</<@http://localhost:3000/main.bundle.js:29457:21 [angular]
onInvoke@http://localhost:3000/vendor.dll.js:30326:28 [angular]
polyfills_lib</</</Zone.prototype.run@http://localhost:3000/polyfills.dll.js:4133:24 [angular => angular]
scheduleResolveOrReject/<@http://localhost:3000/polyfills.dll.js:4720:52 [angular]
onInvokeTask@http://localhost:3000/vendor.dll.js:30317:28 [angular]
polyfills_lib</</</ZoneDelegate.prototype.invokeTask@http://localhost:3000/polyfills.dll.js:4373:17 [angular]
polyfills_lib</</</Zone.prototype.runTask@http://localhost:3000/polyfills.dll.js:4173:28 [<root> => angular]
drainMicroTaskQueue@http://localhost:3000/polyfills.dll.js:4553:25 [<root>]
ZoneTask/this.invoke@http://localhost:3000/polyfills.dll.js:4431:25 [<root>]
我的代码
/////////////// queryBuilder for And-Select
var queryBuilderAnd = db.NoSqlDB.find();
var techniques = queryBuilderAnd
.in('techniques', this.arrStrTchn);
var functional = queryBuilderAnd
.in('functional', this.arrStrFn);
var nonFunctional = queryBuilderAnd
.in('nonFunctional', this.arrStrNFn);
var promiseAnd = queryBuilderAnd.and(techniques, functional, nonFunctional)
.resultList()
.then((nosqlDbAnd) => {
console.log(nosqlDbAnd);
this.nosqlDbsAnd = nosqlDbAnd;
console.log("this.nosqlDbsAnd ", this.nosqlDbsAnd);
this.nosqlDbsAnd.forEach(
(and) => {
console.log("and: " + and.id);
db.NoSqlDB.find()
.equal('id', and.id)
.resultList((result) => {
result.forEach((todo) => {
and.select_and = JSON.parse(JSON.stringify(this.andselected));
if (and.users_and === null) {
and.users_and = new Set();
}
and.users_and.add(db.User.me);
return and.update();
});
});
new db.User_DataDb(
{
functional_select: this.functionalCatObj, nonfunctional_select: this.nfunctionalCatObj,
techniques_select: this.techniquesCatObj, functional_unselect: this.functionalUnsCatObj,
nonfunctional_unselect: this.nfunctionalCatObj, techniques_unselect: this.techniquesUnsCatObj,
ref_NosqlDbAnd: [and.id]
}).insert()
.then((todo1) => {
console.log("todo1.id: ", todo1.id);
db.User_DataDb.find()
.where({
'ref_NosqlDbAnd': and.id,
'id': todo1.id
})
.resultList((result) => {
result.forEach(
(todo2) => {
if (todo2.user_and === null) {
todo2.user_and = new Set();
}
todo2.user_and.add(db.User.me);
return todo2.save({ refresh: true });
});
});
});
});
});
/////////////// queryBuilder for OR-Select
var queryBuilderOr = db.NoSqlDB.find();
var techniques = queryBuilderOr
.in('techniques', this.arrStrTchn);
var functional = queryBuilderOr
.in('functional', this.arrStrFn);
var nonFunctional = queryBuilderOr
.in('nonFunctional', this.arrStrNFn);
var promiseOr = queryBuilderOr.or(techniques, functional, nonFunctional)
.resultList()
.then((nosqlDbOr) => {
console.log(nosqlDbOr);
this.nosqlDbsOr = nosqlDbOr;
console.log("this.nosqlDbsOr ", this.nosqlDbsOr);
this.nosqlDbsOr.forEach(
(or) => {
db.NoSqlDB.find()
.equal('id', or.id)
.resultList((result) => {
result.forEach((todo) => {
or.select_or = JSON.parse(JSON.stringify(this.orselected));
if (or.users_or === null) {
or.users_or = new Set();
}
or.users_or.add(db.User.me);
return or.update();
});
});
new db.User_DataDb(
{
functional_select: this.functionalCatObj, nonfunctional_select: this.nfunctionalCatObj,
techniques_select: this.techniquesCatObj, functional_unselect: this.functionalUnsCatObj,
nonfunctional_unselect: this.nfunctionalCatObj, techniques_unselect: this.techniquesUnsCatObj,
ref_NosqlDbOr: [or.id]
}).insert()
.then((todo1) => {
console.log("todo1.id: ", todo1.id);
db.User_DataDb.find()
.where({
'ref_NosqlDbOr': or.id,
'id': todo1.id
})
.resultList((result) => {
result.forEach(
(todo2) => {
if (todo2.user_or === null) {
todo2.user_or = new Set();
}
todo2.user_or.add(db.User.me);
return todo2.save({ refresh: true });
});
});
});
});
});