我正在尝试使用MongoDB
在Mongoose
中插入一个对象,但没有成功。
在'./models/user,js'中我有:
var mongoDatabase = require('./db'); //I've connected to localhost here
var database = mongoDatabase.getDb();
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
user: String,
adress: String,
});
userSchema.methods.testmethod = function(){
console.log('test');
}
userSchema.methods.insert = function (obj) { //this works but what is the point to use Mongoose If I do it that way
database.collection("users").insertOne(obj, function(err, res) {
if(err) throw err;
console.log("1 record inserted");
});
}
var User = mongoose.model('User', userSchema);
module.exports = User;
在'./controllers/user.js'
中var express = require('express');
var router = express.Router();
var User = require('../models/user');
router.post("/", function(request, response) {
var obj = new User({
user: request.body.name,
adress: request.body.adress,
});
obj.testmethod(); //works fine
obj.insert(obj); //throws an error
User.insertOne(obj, function(err, res) { //error: insertOne is not a function
if(err) throw err;
console.log("1 record inserted");
});
});
module.exports = router;
我尝试了几种方法,但没有结果。有人能帮助我吗?
答案 0 :(得分:1)
你不应该使用你在' ./ db'中创建的任何mongodb对象。做这项工作,猫鼬为你照顾它。尝试简化到这个:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
user: String,
adress: String,
});
module.exports = mongoose.model('User', userSchema);
然后在您的控制器代码中
var express = require('express');
var router = express.Router();
var User = require('../models/user');
router.post("/", function(request, response, next) {
var user = new User({
user: request.body.name,
adress: request.body.adress,
});
user.save(function(err, u) {
if (err) return next(err);
return res.json(u);
});
});
module.exports = router;
在您的应用启动代码中的某个位置(通常位于app.js或类似位置),您通常需要在设置路线之前拨打mongoose.connect(<connection url>)
。
请注意,您也可以明确地调用insert()
,但它是模型对象的静态方法,如下所示:
User.insert({user: 'bob', address: 'somewhere, nh'}, cb)