我正在学习 React with Node (Express/Mongoose) 和 MongoDB,现在一切似乎都按预期工作,但我有一个巨大的问题:
var userSchema = new mongoose.Schema({
login: { type: String, required: true, unique: true },
password: { type: String, required: true }
})
app.post('/registerUser', function (req, res) {
res.send(req.body)
db.on('error', console.error.bind(console, 'connection error:'))
// save user using model
var user = new UserModel(req.body)
user.save()
}
每次我发布登录名和密码时,它只会保存一次,然后就结束了。
例如,如果我发送 POST 三次:
登录=admin&密码=admin
登录=admin2&密码=admin2
登录=admin3&密码=admin3
db.users.count()
显示 1
并且只有第一个 POST (admin:admin) 位于数据库中。其余的都被忽略了。我正在运行 console.logs 来查看出了什么问题,但每个 POST 都有不同的 _id,但不知何故,在第一个 POST 之后不保存。我在想save
可能有问题,也许我应该使用update
或create
之类的东西,但我看过的每个教程和文档都说要使用save
。
当我删除该字段且集合为空,然后发送 POST 时,它会立即保存,然后忽略所有其他 POST(第二个、第三个等)。
我做错了什么?我希望我的收藏中有超过 1 位用户:(
[编辑]
看起来我的 ID 是“动态”创建的,因此 MongoDB 应根据文档触发 insert
:https://docs.mongodb.com/manual/reference/method/db.collection.save/#behavior (而且我不确定它现在在做什么,因为它看起来也不像 update
:/)
最佳答案
好吧,我完全忘记了我可以使用 mongo 的 CLI 来调试它,从那里很容易发现问题。如果您遇到这种情况,请尝试以下步骤:
从命令行/终端启动mongo。
尝试为您复制有问题的操作 Node/ Mongoose 句柄,在我的例子中,它是添加新用户:
使用用户
db.users.save( { 登录名: "fromCLI", 密码: "fromCLI"} )
db.users.save( { 登录名: "fromCLI2", 密码: "fromCLI2"} )
阅读错误消息,就我而言,它是:
"errmsg": "E11000 重复键错误集合:users.users 索引:username_1 dup key: { : null }"
我没有用户名
索引。我曾经有。不得不放弃该集合,然后它神奇地开始工作!
关于node.js - NodeJS/MongoDB - 字段仅添加一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43690418/