无法从Node.js应用更新 CosmosDB 中的文档



这很可能是新手犯的错误,但如果有任何帮助,我们将不胜感激。。。。我正在尝试从我的节点应用程序(使用PUG(更新cosmosDB中的一个文档。但是当我调用replace方法时。。。

async updateItem(item) {
const itemId = item.ticketId;
const {resource: replaced } = await this.tickets.item(itemId,itemId).replace(item);
return replaced;
}

我得到以下错误:

RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: TypeError: 
C:UsersdonkoOneDrivevscodeappstartviewseditticket.pug:30
28|       .form-group
29|         label.ticket-label(for='fk_ticket_status') Ticket Status : 
>    30|         select(name="fk_ticket_status" value=ticket.fk_ticket_status required 

所以我的问题是,为什么对CosmosDb替换方法的调用在页面上失败了?我还没有到我的代码应该重新呈现页面的地步?项目对象通过我的路由器调用为:

async updateTicket(req, res) {
await this.ticketModel.updateItem(req.body);

相比之下,我的addItem函数运行得很好:

async addItem(item) {
debug('Adding a ticket to the database')
item.submitted_date = Date.now();
item.fk_ticket_status = 1;
item.assigned_to = '';
item.parent = '';
const { resource: doc } = await this.tickets.items.create(item)
return doc
}

我解决了这个问题。根据Azure Cosmos DB中的部分文档更新,要使用replace更新文档,客户端需要读取该文档,在本地更新该文档,然后将其作为整个文档replace API调用通过连线发送。当我尝试这个时,效果很好:

const oldDoc = await this.getItem(itemId);
const newDoc = oldDoc;
newDoc.updated_date = Date.now();
//... more updates here
const {resource: replaced } = await this.tickets.item(itemId, itemId).replace(newDoc);

最新更新