gpt4 book ai didi

javascript - 如何将数组从 html 发送到 node.js,然后再发送到 mongodb?

转载 作者:可可西里 更新时间:2023-11-01 10:45:58 24 4
gpt4 key购买 nike

需要将longlat 的值作为一个数组发送到输入中,然后将其保存到数据库中。找到了很多解释如何处理数组的示例,但大多数都是在 PHP 中。这是代码:

HTML

<html>
<head>
<script>
function geoFindMe() {
var coordinates = document.getElementById("coordinates");
if (!navigator.geolocation) {
alert("Geolocation is not supported by your browser");
return;
}
function success(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var coordinates = [longitude, latitude];
document.getElementById("coordinates").value = coordinates;
}
function error() { alert("Unable to retrieve your location"); }
navigator.geolocation.getCurrentPosition(success, error);
}
</script>
</head>
<body>
<label for="pos">Allow location service</label>
<input name="pos" id="coordinates" type="checkbox" onclick="geoFindMe()" value="coordinates[]">
</body>
</html>

app.js

app.post("/", (req, res) => {
const newUser = new data({
geometry: {
type:'Point',
coordinates: req.body.coordinates
}
});
});

data.js

const FindMyLocation = new Schema({
geometry: {
type: {
type: String,
default: 'Point'
},
coordinates: {
type:[Number],
index: '2dsphere'
}
}
});

感谢您的关注。

最佳答案

使用Ajax调用API发送请求。

<script>
function geoFindMe() {
var coordinates = document.getElementById("coordinates");
if (!navigator.geolocation) {
alert("Geolocation is not supported by your browser");
return;
}
function success(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var coordinates = [longitude, latitude];
document.getElementById("coordinates").value = coordinates;
var xhttp = new XMLHttpRequest();
xhttp.open("POST",URL, true);
xhttp.setRequestHeader('Content-type','application/json; charset=utf-8');
xhttp.send(JSON.stringify({"coordinates":coordinates}));
}
function error() { alert("Unable to retrieve your location"); }
navigator.geolocation.getCurrentPosition(success, error);
}
</script>

在你的 api 中你需要 mongoose 或 mongodb 包来插入

var data = require('data.js');
app.post("/", (req, res) => {
const newUser = new data({
geometry: {
type:'Point',
coordinates: req.body.coordinates
}
});
newUser.save(err => {
if (err) return res.status(500).send(err);
return res.status(200).send("your success message");
});

在您的 data.js 中,您需要在文件末尾添加,以便可以访问。

module.exports = mongoose.model('FindMyLocation', FindMyLocation );

关于javascript - 如何将数组从 html 发送到 node.js,然后再发送到 mongodb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52353557/

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