Node.js 如何使用couchbase for item在数据库中添加对象数组而不丢失其他数据
像这样Node.js 如何使用couchbase for item在数据库中添加对象数组而不丢失其他数据,node.js,typescript,couchbase,n1ql,Node.js,Typescript,Couchbase,N1ql,像这样 { id:1, name:john, role:[ {name:boss, type:xyz}, {name:waiter, type:abc} ] } 我想在不丢失其他数据的情况下将对象数组添加到“角色”,但新数据应该作为对象添加到数组中 我试过了 bucket.upsert(key, data, (error: CouchbaseError | null, result: any) => {}) 其中key是文档的id,数据是{name:boss,ty
{
id:1,
name:john,
role:[
{name:boss, type:xyz},
{name:waiter, type:abc}
]
}
我想在不丢失其他数据的情况下将对象数组添加到“角色”,但新数据应该作为对象添加到数组中
我试过了
bucket.upsert(key, data, (error: CouchbaseError | null, result: any) => {})
其中key是文档的id,数据是{name:boss,type:xyz}
它显示密钥已经存在
对于db.upsert,它用新数据替换整个数据
var query = N1qlQuery.fromString('UPDATE `myBucket` SET role = ' + '"' + data + '"' + ' WHERE meta().id =' + '"' + key + '"');
上面的代码显示了数据库中的角色:[object] 其次,我认为您需要的是子文档API,特别是“array append”操作。这允许您对文档的某些部分进行更改 我不是一个很好的Node/JavaScript开发人员,但我假设您的示例是这样的:
bucket
.mutateIn('1')
.arrayAppend('role', theNewRoleYouWantToAdd)
.execute(function(err, res) {
});
旁注:对于N1QL示例,显示
[object object]
的原因可能与将其作为字符串返回的数据有关。您还应该查找“SQL注入”,因为像这样的N1QL代码可能会受到影响。查看占位符和。您使用的是Couchbase的哪个版本,您使用的是Node SDK的哪个版本?对于Couchbase:2.6.12和Node:v14.16.12.6.12,必须是Couchbase SDK版本,您使用的Couchbase Server的哪个版本?Windows上的7.0.0(beta)企业版感谢上述解决方案。我已经试过了,但它显示“.mutateIn不存在于类型bucket上”,并没有得到确切的问题,因为我是couchbase的新手。请就上述问题提出解决方案。谢谢。@softwaredeveloper您已经达到了我的Node/JS知识的极限,所以我请Couchbase的其他人来看看。
bucket
.mutateIn('1')
.arrayAppend('role', theNewRoleYouWantToAdd)
.execute(function(err, res) {
});