我在尝试添加用户时用一些虚拟数据填充我的数据库。创建了一个用户对象,但没有保存任何属性...怎么了?
app.get('/setup', function (req, res) {
User.findOne({ name: "Nick" }, function (err, user) {
if (user == undefined) {
var nick = new User({
name: "Nick",
}).save();
res.json({ "success": true, "msg": "user created" });
} else {
res.json({ "success": true, "msg": "user existed" });
}
});
});
调用它返回“用户创建”。这是我输出所有用户的方法:
app.get('/users', function(req, res) {
User.find({}, function(err, user) {
res.json(user);
});
});
这里的输出是
[
{
"_id": "565772db5f6f2d1c25e999be",
"__v": 0
},
{
"_id": "5657734ba859fefc1dca77db",
"__v": 0
},
{
"_id": "5657738ba859fefc1dca77dc",
"__v": 0
},
{
"_id": "565774f1cf99a2b81fca1e7f",
"__v": 0
},
{
"_id": "565775f0cf99a2b81fca1e80",
"__v": 0
}
]
在我尝试添加“Nick”几次的地方没有……有任何输入吗? :D
我的 Mongoose 模型,与其他模型位于其自己的 Model.js 文件中:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// set up a mongoose model and pass it using module.exports
module.exports = mongoose.model('User', new Schema({
name: String,
password: String,
}));
最佳答案
鉴于您在用户架构中有一个名称,您还需要等到您的 save() 查询完成然后发送响应:
app.get('/setup', function (req, res) {
User.findOne({ name: "Nick" }, function (err, user) {
if (err) {
return res.json({ "success": false, "error": err });
}
if (user) {
return res.json({ "success": true, "msg": "user existed" });
}
var nick = new User({ name: "Nick" });
nick.save(function(err, userObj) {
if (err) {
return res.json({ "success": false, "error": err });
}
res.json({ "success": true, "msg": "user created" });
});
});
});
关于javascript - 为什么 MongoDB 不保存我的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33947121/