我试图保存学生的记录,但不应该重复记录。这怎么可能?在下面的代码我试图做
app.post("/save",function(req,res){
var std=new student(req.body);
student.findOne({},function(err,success){
if(err)
{
console.log(err);
}
else
{
// console.log(success);
std.save(function(err,success){
if(err)
{
console.log(err);
}
else
{
console.log("inserted");
console.log(success);
}
});
}
})
});
答案 0 :(得分:0)
以下是示例代码。请注意,MongoDB数据库中存在的值取决于OP中提到的req.body
。
在下面的代码中,我在Student
集合中只有name属性。因此,重复检查仅基于name属性。
如果要检查集合中的特定属性以确定重复值,则可能需要更改代码。
请注意,我的Student
集合在模式中也只有属性。
var express = require('express');
var MongoClient = require('mongodb').MongoClient;
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Student = mongoose.model('Student', { name: String });
var app = express();
var bodyParser = require('body-parser');
var app = express();
var urlencoded_body_parser = bodyParser.urlencoded({
extended: true
});
app.use(bodyParser.json());
app.use(urlencoded_body_parser);
app.post("/save", function (req, res) {
console.log(req.body);
var student = new Student(req.body);
Student.findOne(req.body, function (err, success) {
if (err) {
console.log(err);
res.send(err);
}
else {
console.log(success);
if (success == null) {
student.save(function (err, success) {
if (err) {
console.log(err);
res.send(err);
}
else {
console.log("inserted");
console.log(success);
res.send("success");
}
});
} else {
res.send("Student already present");
}
}
})
});
app.listen(3000);
<强>输出: - 强>
首次执行: -
<强>输入: - 强>
{
"name" : "john"
}
<强>输出: - 强>
success
使用相同输入json的后续执行: -
<强>输出: - 强>
Student already present