gpt4 book ai didi

node.js - Mongoose objectId 未保存在另一个集合中

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:36 24 4
gpt4 key购买 nike

我是 mongoose 和 nodejs 的新手。请帮助我了解保存集合时代码中的问题。我的 user.js 如下所示

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bcrypt = require('bcrypt-nodejs');

var UserSchema = new Schema ({
name: { type: String, required: true },
username:{ type:String, required: true, index:{ unique: true}},
password:{ type: String, required: true, select: false},
email:{ type: String, required: true, select: true},
mobile:{ type: String, required: true, select: true},
nativecid:{ type: Schema.Types.ObjectId, ref:'City'},
regdate:{ type: Date, default: Date.now },
did:{ type: String, required: false }
});

UserSchema.pre('save', function(next){

var user = this;

if(!user.isModified('password')) return next();
bcrypt.hash(user.password, null, null, function(err, hash){
if(err) return next(err);
user.password = hash;
next();
});
});

UserSchema.methods.comparePassword = function(password){
var user = this;
return bcrypt.compareSync(password, user.password);
};

module.exports = mongoose.model('User', UserSchema);

我的城市模型即 city.js 如下所示

var mongoose = require('mongoose');

var Schema = mongoose.Schema;

var CitySchema = new Schema({
name: { type: String, required: true },
status: { type: Boolean, default: true },
date: { type: Date, default: Date.now }
});

module.exports = mongoose.model( 'City', CitySchema );

城市已存储在数据库中,如下

{ "_id" : ObjectId("56a4a0adb0f445561cfd4e37"), "name" : "New York", "date" : ISODate("2016-01-24T10:00:13.220Z"), "status" : 1, "__v" : 0 }

我希望纽约的这个 ObjectId 在用户注册时保存在用户集合中。我正在尝试如下但没有成功。

var User = require('../models/user');
var City = require('../models/city');

api.post('/signup', function(req, res){

var user = new User({
name: req.body.name,
username: req.body.username,
password: req.body.password,
email: req.body.email,
mobile: req.body.mobile
});
City
.findOne({ name: "New York" })
.populate('_id')
.exec(function (err, city1) {
if(err){
res.send(err);
return;
}
console.log('The creator is %s', city1.name);
return user.nativecid = city1._id;

})

user.save(function(err){
if(err){
res.send(err);
return;
}

res.json({
success: true,
message: 'User created successfully!'
});
});
});

我不明白出了什么问题。请给我建议。

最佳答案

只需将用户保存在city.findOne(嵌套)中,可能不需要填充,您应该使用投影

City.findOne({ name: "New York" }, {name:1}) // ID return defaulat
.exec(function (err, city1) {
if(err){
res.send(err);
return;
}
console.log('The creator is %s', city1.name);
user.nativecid = city1._id;

user.save(function(err1){
if(err1){
res.send(err1);
return;
}

res.json({
success: true,
message: 'User created successfully!'
});
});

})

关于node.js - Mongoose objectId 未保存在另一个集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com