Node.js 猫鼬找到匹配项,但不';t修改
我是Mongoose的新手,还不知道如何使用updateOne()函数Node.js 猫鼬找到匹配项,但不';t修改,node.js,mongodb,mongoose,discord.js,Node.js,Mongodb,Mongoose,Discord.js,我是Mongoose的新手,还不知道如何使用updateOne()函数 const statusChannelIDSchema = require('../models/statusChannelIDs.js'); var filter = {guildId: guildId}; var update = {$set: {statusChannelID: statusChannelID}}; statusChannelIDSchema.updateOne(fi
const statusChannelIDSchema = require('../models/statusChannelIDs.js');
var filter = {guildId: guildId};
var update = {$set: {statusChannelID: statusChannelID}};
statusChannelIDSchema.updateOne(filter, update, function(err){
console.log(err);
})
.then(result => console.log(result))
.catch(err => console.log(err));
console.log(结果)将输出:
null
{ n: 1, nModified: 0, ok: 1 }
所以它匹配,但不修改。不确定“null”在那里做什么
这是我的/models/statusChannelIDs.js文件
const mongoose = require('mongoose');
const statusChannelIDSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
statusChannelID: Number,
guildId: {
type: Number,
required: true,
unique: true
},
userId: Number,
channelId: Number,
msgId: Number,
userName: String
})
module.exports = mongoose.model("statusChannelIDs", statusChannelIDSchema);
我做错了什么
如何更好地调试mongoose?经过长时间的调试,我终于找到了问题:
guildId和statusChannelID是符合您的模式的数字类型,请尝试在更新中使用相同的类型,而不是字符串。@FernandoZamperin您的意思是这样吗?var filter={guildId:guildId};var update={$set:{statusChannelID:statusChannelID}}以上代码返回完全相同的结果我做错了吗?是的,但这两个变量的类型都是数字吗?@FernandoZamperin我用typof检查并使用parseInt()确保结果仍然相同。请尝试此操作,看看它是否有效->statusChannelIDSchema.findOneAndUpdate(filter,update)。然后(result=>console.log(result)).catch(err=>console.log(err));PS:不带$set