1

我有一个游戏服务器 (alt:V),我想用角色的当前状态更新数据库。我的问题是这段代码:

console.log(`Character id at disconnect: ${id}`)
let saved = await db.updatePartialData(id, player.data, 'characters')

返回错误:

Error: object [{"_bsontype":"ObjectID","id":{"0":95,"1":149,"2":92,"3":176,"4":81,"5":130,"6":202,"7":111,"8":255,"9":155,"10":50,"11":164}}] is not a valid ObjectId
    at serializeObjectId (/home/simon/altv-server/node_modules/bson/lib/bson/parser/serializer.js:287:11)
    at serializeInto (/home/simon/altv-server/node_modules/bson/lib/bson/parser/serializer.js:935:17)
    at serializeObject (/home/simon/altv-server/node_modules/bson/lib/bson/parser/serializer.js:347:18)
    at serializeInto (/home/simon/altv-server/node_modules/bson/lib/bson/parser/serializer.js:941:17)
    at serializeObject (/home/simon/altv-server/node_modules/bson/lib/bson/parser/serializer.js:347:18)
    at serializeInto (/home/simon/altv-server/node_modules/bson/lib/bson/parser/serializer.js:941:17)
    at BSON.serialize (/home/simon/altv-server/node_modules/bson/lib/bson/bson.js:64:28)
    at Msg.serializeBson (/home/simon/altv-server/node_modules/mongodb/lib/core/connection/msg.js:126:22)
    at Msg.makeDocumentSegment (/home/simon/altv-server/node_modules/mongodb/lib/core/connection/msg.js:118:33)
    at Msg.toBin (/home/simon/altv-server/node_modules/mongodb/lib/core/connection/msg.js:104:25)

尽管第一行将其打印到控制台:

Character id at disconnect: 5f955cb05182ca6fff9b32a4

updatePartialData函数是simplymongonpm 包的一部分,定义如下:

import mongodb from 'mongodb';
export const ObjectID = mongodb.ObjectID;

...

async updatePartialData(id, partialObjectData, collection) {
        try {
            await this.db
                .collection(collection)
                .findOneAndUpdate({ _id: ObjectID(id) }, { $set: { ...partialObjectData } });

            return true;
        } catch (err) {
            console.error(err);
            return false;
        }
}

我在 Debian 10、NodeJS 15.0.1 上运行它,我所有的 npm 包都是最新的。如果可以的话请帮忙。这真让我抓狂。

4

0 回答 0