无法使用Mongoose插入MongoDB(Can't insert into MongoDB with Mongoose)

编程入门 行业动态 更新时间:2024-10-18 08:21:21
无法使用Mongoose插入MongoDB(Can't insert into MongoDB with Mongoose)

我正在尝试使用Mongoose在MongoDB插入一个对象,但没有成功。 在'./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;

我尝试过几种方法,但没有结果。 有人能帮我吗?

I'm trying to insert an object in MongoDB with Mongoose, but without success. In './models/user,js' I have:

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;

In './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;

I have tried few more ways to do it, but without result. Can someone help me?

最满意答案

你不应该使用'。/ db'中创建的任何mongodb对象来完成这项工作,mongoose会为你处理它。 尝试简化到这个:

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)

You shouldn't be using whatever mongodb object you're creating in './db' to do this work, mongoose takes care of it for you. Try simplifying down to this:

var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ user: String, adress: String, }); module.exports = mongoose.model('User', userSchema);

Then in your controller code

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;

Somewhere in your app startup code (often in app.js or similar location) you'll want to call mongoose.connect(<connection url>), normally prior to setting up routes.

Note you can also call insert() explicitly, but it's a static method on the model object, like so:

User.insert({user: 'bob', address: 'somewhere, nh'}, cb)

更多推荐

本文发布于:2023-07-22 09:44:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1219091.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Mongoose   MongoDB   insert

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!